Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
rom_subroutines [2016/05/25 11:29] ex_writer |
— (current) | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Bally On-Board ROM Subroutines ====== | ||
- | ^ Routine # ^ Location? ^ Arguments ^ Name ^ Function ^ | ||
- | | 00 | 007B | none | INTPC | Initiates multiple subroutine calls. | | ||
- | | 02 | 0279 | none | XINTC/EXIT | Performs an ending function for multiple subroutine calls. | | ||
- | | 04 | 0634 | L,H | RCALL | Jumps immediately to location specified by HL. | | ||
- | | 06 | 007D | L,H | MCALL | "CALL" for subroutines. Nests a multiple subroutine call. HL specifies data location. | | ||
- | | 08 | 0B79 | none | MRET | "RET" for subroutines. Performs a POP AF and POP HL. (Aborts a nest.) | | ||
- | | 10 | 0ACA | L,H | MJUMP | "JP" for subroutines. A logical nested subroutine jump. Execution of subroutines starts over at location HL. | | ||
- | | 12 | 00A4 | B | SUCK | Performs a SACRED register load according to B. | | ||
- | | 14 | 018B | none | ACTINT | Interrupt Service Routine. Executes SR16 on 4FD5–4FD8 and SR0200 every interrupt. | | ||
- | | 16 | 0480 | C | DECCTS | Checks locations 4FD5–4FDC according to bits of C (Bit 0 = 4FD5). | | ||
- | | 18 | 050A | IXl,IXh,A,L,H | BMUSIC | Sound Generator. Enter with IX pointing to a work area, HL pointing to parameter string. Sound parameters are in sets. | | ||
- | | 20 | 05FE | non | EMUSIC | Stops all sound output. Sets (4FEA) and (4FF9) to 00. Outputs 00 to port 18, 8 times. | | ||
- | | 22 | 03CF | D,B,A | SETOUT | Outputs D to port 0A, B to port 09, A to port 0E. | | ||
- | | 24 | 01DB | L,H | | Output color specifications. | | ||
- | | 26 | 0AF4 | E,D,C,B,A || Stores A in BC bytes starting at location DE. | | ||
- | | 28 | 06B4 | E,D,C,B,A || Display Solid Color in 4000 area. | | ||
- | | 30 | 0704 | IXl,IXh,L,H || Load A with (IX+00), D with (IX+0B), E with (IX+06), set bit 6 in (IX+01) and execute SR32, 34, 36, and 38. | | ||
- | | 32 | 0711 | E,D,A,L,H || Enter with HL pointing to first of four bytes of data. Increment E (horizontal dot number) by (HL) and increment D (vertical dot number) by (HL+1). Execute SR34, 36, and 38 with HL incremented by 2. | | ||
- | | 34 | 071B | E,D,A,L,H || Pick up C (# bytes/horizontal line) from (HL) and B (number of horizontal lines) from (HL+1). Execute SR36 and 38 with HL incremented by 2. | | ||
- | | 36 | 071F | E,D,C,B,A,L,H || Calculate CRT index from V/H dot number in DE by executing SR56. Index (0000 area) returned in DE. Execute SR38. | | ||
- | | 38 | 0722 | E,D,C,B,A,L,H || Move CRT data. Moves C bytes of data from location HL to location DE. | | ||
- | | 40 | 0783 | IXl,IXh,E,D | | | | ||
- | | 42 | 07A4 | E,D,B,L,H | | Display solid color. | | ||
- | | 44 | 03B9 | E,D,C,B,L,H || Move CRT Data. Moves C bytes of data from HL to DE+2. | | ||
- | | 46 | 07B3 | E,D,L,H | | Move data to CRT. | | ||
- | | 48 | 026A | E,D,C,B,L,H || Block moves. Moves C bytes from (HL+DE) to (HL). Increments HL by DE and repeats B times. | | ||
- | | 50 | 07E7 | E,D,C,A || Character display subroutine. See routine 52. | | ||
- | | 52 | 07CA | E,D,C,L,H || String display routine. | | ||
- | | 124 | 0023 | E,D,L,H || Executes as LD (HL),DE | | ||
- | | 126 | 0240 | E,D,C,L,H | |Joystick manipulation. | | ||
- | | | 0200 | || Timer subroutine. Executed every interrupt by SR14. If user has interrupts and does not call SR14 during interrupts, they should call 0200 during their interrupt service routine. | | ||
- | | | 0203 | || Decrements location specified by HL. | |