diff --git a/pt3_player/interrupt_handler.s b/pt3_player/interrupt_handler.s index 55725465..0ceb5cca 100644 --- a/pt3_player/interrupt_handler.s +++ b/pt3_player/interrupt_handler.s @@ -18,7 +18,7 @@ ; to be sure status flag and accumulator set properly -TIME_OFFSET EQU 13 +TIME_OFFSET = 13 interrupt_handler: php diff --git a/pt3_player/mockingboard_a.s b/pt3_player/mockingboard_a.s index 20bd5b8f..d7e92658 100644 --- a/pt3_player/mockingboard_a.s +++ b/pt3_player/mockingboard_a.s @@ -19,24 +19,24 @@ ; left speaker -MOCK_6522_ORB1 EQU $C400 ; 6522 #1 port b data -MOCK_6522_ORA1 EQU $C401 ; 6522 #1 port a data -MOCK_6522_DDRB1 EQU $C402 ; 6522 #1 data direction port B -MOCK_6522_DDRA1 EQU $C403 ; 6522 #1 data direction port A +MOCK_6522_ORB1 = $C400 ; 6522 #1 port b data +MOCK_6522_ORA1 = $C401 ; 6522 #1 port a data +MOCK_6522_DDRB1 = $C402 ; 6522 #1 data direction port B +MOCK_6522_DDRA1 = $C403 ; 6522 #1 data direction port A ; right speaker -MOCK_6522_ORB2 EQU $C480 ; 6522 #2 port b data -MOCK_6522_ORA2 EQU $C481 ; 6522 #2 port a data -MOCK_6522_DDRB2 EQU $C482 ; 6522 #2 data direction port B -MOCK_6522_DDRA2 EQU $C483 ; 6522 #2 data direction port A +MOCK_6522_ORB2 = $C480 ; 6522 #2 port b data +MOCK_6522_ORA2 = $C481 ; 6522 #2 port a data +MOCK_6522_DDRB2 = $C482 ; 6522 #2 data direction port B +MOCK_6522_DDRA2 = $C483 ; 6522 #2 data direction port A ; AY-3-8910 commands on port B ; RESET BDIR BC1 -MOCK_AY_RESET EQU $0 ; 0 0 0 -MOCK_AY_INACTIVE EQU $4 ; 1 0 0 -MOCK_AY_READ EQU $5 ; 1 0 1 -MOCK_AY_WRITE EQU $6 ; 1 1 0 -MOCK_AY_LATCH_ADDR EQU $7 ; 1 1 1 +MOCK_AY_RESET = $0 ; 0 0 0 +MOCK_AY_INACTIVE = $4 ; 1 0 0 +MOCK_AY_READ = $5 ; 1 0 1 +MOCK_AY_WRITE = $6 ; 1 1 0 +MOCK_AY_LATCH_ADDR = $7 ; 1 1 1 ;======================== diff --git a/pt3_player/pt3_dumper.s b/pt3_player/pt3_dumper.s index 36f6e2a4..4a6bed82 100644 --- a/pt3_player/pt3_dumper.s +++ b/pt3_player/pt3_dumper.s @@ -7,7 +7,7 @@ PT3_LOC = $4000 -NUM_FILES EQU 15 +NUM_FILES = 15 ;============================= @@ -422,7 +422,8 @@ FRAMEH: .byte $00 song_list: ; .asciiz "CR.PT3" - .asciiz "EA.PT3" +; .asciiz "EA.PT3" + .asciiz "RI.PT3" ;========= ;routines diff --git a/pt3_player/pt3_player.s b/pt3_player/pt3_player.s index 2a1077b8..15a377ac 100644 --- a/pt3_player/pt3_player.s +++ b/pt3_player/pt3_player.s @@ -10,7 +10,7 @@ PT3_LOC = $4000 ; Number of files. Should probably detect this automatically -NUM_FILES EQU 18 +NUM_FILES = 18 ;============================= diff --git a/pt3_player/pt3_timer.s b/pt3_player/pt3_timer.s index 6775d4c9..ea878f77 100644 --- a/pt3_player/pt3_timer.s +++ b/pt3_player/pt3_timer.s @@ -4,8 +4,7 @@ PT3_LOC = $4000 -NUM_FILES EQU 15 - +NUM_FILES = 15 ;============================= ; Setup @@ -283,9 +282,6 @@ song_list: -TIME_OFFSET EQU 13 - - timer_fractions: .byte $0 timer_seconds_l: .byte $0 diff --git a/pt3_player/zp.inc b/pt3_player/zp.inc index 4a58cfd6..86e8478a 100644 --- a/pt3_player/zp.inc +++ b/pt3_player/zp.inc @@ -1,42 +1,34 @@ -.define EQU = - -LZ4_SRC EQU $00 -LZ4_DST EQU $02 -LZ4_END EQU $04 -COUNT EQU $06 -DELTA EQU $08 - ;; Zero page monitor routines addresses -WNDLFT EQU $20 -WNDWDTH EQU $21 -WNDTOP EQU $22 -WNDBTM EQU $23 -CH EQU $24 -CV EQU $25 -GBASL EQU $26 -GBASH EQU $27 -BASL EQU $28 -BASH EQU $29 -BAS2L EQU $2A -BAS2H EQU $2B -H2 EQU $2C -V2 EQU $2D -MASK EQU $2E -LASTIN EQU $3F -COLOR EQU $30 -MODE EQU $31 -INVFLG EQU $32 -PROMPT EQU $33 -YSAV EQU $34 -YSAV1 EQU $35 -CSWL EQU $36 ; address of COUT1 routine -CSWH EQU $37 -KSWL EQU $38 ; key in routine -KSWH EQU $39 +WNDLFT = $20 +WNDWDTH = $21 +WNDTOP = $22 +WNDBTM = $23 +CH = $24 +CV = $25 +GBASL = $26 +GBASH = $27 +BASL = $28 +BASH = $29 +BAS2L = $2A +BAS2H = $2B +H2 = $2C +V2 = $2D +MASK = $2E +LASTIN = $3F +COLOR = $30 +MODE = $31 +INVFLG = $32 +PROMPT = $33 +YSAV = $34 +YSAV1 = $35 +CSWL = $36 ; address of COUT1 routine +CSWH = $37 +KSWL = $38 ; key in routine +KSWH = $39 -SEEDL EQU $4E -SEEDH EQU $4F +SEEDL = $4E +SEEDH = $4F ; dos33 zero page = 26-2f, 35-38, 3e 3f 40-4d @@ -45,113 +37,113 @@ SEEDH EQU $4F ; DOS33: Confirmed kills $68 -RWTSL EQU $60 -RWTSH EQU $61 -DOSBUFL EQU $62 -DOSBUFH EQU $63 -FILEML EQU $64 -FILEMH EQU $65 - ;TURNING EQU $60 - ;SCREEN_X EQU $61 ; not used? - ;SCREEN_Y EQU $62 +RWTSL = $60 +RWTSH = $61 +DOSBUFL = $62 +DOSBUFH = $63 +FILEML = $64 +FILEMH = $65 + ;TURNING = $60 + ;SCREEN_X = $61 ; not used? + ;SCREEN_Y = $62 - ;ANGLE EQU $63 - ;HORIZ_SCALE_I EQU $64 - ;HORIZ_SCALE_F EQU $65 - ;FACTOR_I EQU $66 - ;FACTOR_F EQU $67 - ;DX_I EQU $68 - ;DX_F EQU $69 - ;SPACEX_I EQU $6A - ;SPACEX_F EQU $6B - ;CX_I EQU $6C - ;CX_F EQU $6D - ;DY_I EQU $6E - ;DY_F EQU $6F + ;ANGLE = $63 + ;HORIZ_SCALE_I = $64 + ;HORIZ_SCALE_F = $65 + ;FACTOR_I = $66 + ;FACTOR_F = $67 + ;DX_I = $68 + ;DX_F = $69 + ;SPACEX_I = $6A + ;SPACEX_F = $6B + ;CX_I = $6C + ;CX_F = $6D + ;DY_I = $6E + ;DY_F = $6F -AY_REGISTERS EQU $70 -A_FINE_TONE EQU $70 -A_COARSE_TONE EQU $71 -B_FINE_TONE EQU $72 -B_COARSE_TONE EQU $73 -C_FINE_TONE EQU $74 -C_COARSE_TONE EQU $75 -NOISE EQU $76 -ENABLE EQU $77 -A_VOLUME EQU $78 -B_VOLUME EQU $79 -C_VOLUME EQU $7A -ENVELOPE_FINE EQU $7B -ENVELOPE_COARSE EQU $7C -ENVELOPE_SHAPE EQU $7D -COPY_OFFSET EQU $7E -DECODER_STATE EQU $7F +AY_REGISTERS = $70 +A_FINE_TONE = $70 +A_COARSE_TONE = $71 +B_FINE_TONE = $72 +B_COARSE_TONE = $73 +C_FINE_TONE = $74 +C_COARSE_TONE = $75 +NOISE = $76 +ENABLE = $77 +A_VOLUME = $78 +B_VOLUME = $79 +C_VOLUME = $7A +ENVELOPE_FINE = $7B +ENVELOPE_COARSE = $7C +ENVELOPE_SHAPE = $7D +COPY_OFFSET = $7E +DECODER_STATE = $7F -PATTERN_L EQU $80 -PATTERN_H EQU $81 -ORNAMENT_L EQU $82 -ORNAMENT_H EQU $83 -SAMPLE_L EQU $84 -SAMPLE_H EQU $85 +PATTERN_L = $80 +PATTERN_H = $81 +ORNAMENT_L = $82 +ORNAMENT_H = $83 +SAMPLE_L = $84 +SAMPLE_H = $85 -DECODE_ERROR EQU $90 -A_COLOR EQU $91 -B_COLOR EQU $92 -C_COLOR EQU $93 -COPY_TIME EQU $94 -DECOMPRESS_TIME EQU $95 -TIME_TAKEN EQU $96 -SCREEN_Y EQU $97 -WHICH_FILE EQU $98 -COLOR_MASK EQU $99 -RASTERBARS_ON EQU $9A -RANDOM_POINTER EQU $9B -LOOP EQU $9C -MB_VALUE EQU $9D -;MB_CHUNK EQU $9E -MB_ADDRL EQU $9F -MB_ADDRH EQU $A0 -DONE_PLAYING EQU $A1 -MB_CHUNK_OFFSET EQU $A2 -DONE_SONG EQU $A3 -FIRE_FB_L EQU $A4 -FIRE_FB_H EQU $A5 -FIRE_FB2_L EQU $A6 -FIRE_FB2_H EQU $A7 -FIRE_FB_LINE EQU $A8 -FIRE_Q EQU $A9 -FIRE_Y EQU $AA -FIRE_X EQU $AB +DECODE_ERROR = $90 +A_COLOR = $91 +B_COLOR = $92 +C_COLOR = $93 +COPY_TIME = $94 +DECOMPRESS_TIME = $95 +TIME_TAKEN = $96 +SCREEN_Y = $97 +WHICH_FILE = $98 +COLOR_MASK = $99 +RASTERBARS_ON = $9A +RANDOM_POINTER = $9B +LOOP = $9C +MB_VALUE = $9D +;MB_CHUNK = $9E +MB_ADDRL = $9F +MB_ADDRH = $A0 +DONE_PLAYING = $A1 +MB_CHUNK_OFFSET = $A2 +DONE_SONG = $A3 +FIRE_FB_L = $A4 +FIRE_FB_H = $A5 +FIRE_FB2_L = $A6 +FIRE_FB2_H = $A7 +FIRE_FB_LINE = $A8 +FIRE_Q = $A9 +FIRE_Y = $AA +FIRE_X = $AB ; More zero-page addresses ; we try not to conflict with anything DOS, MONITOR or BASIC related - ;COLOR1 EQU $E0 -COLOR2 EQU $E1 - ;MATCH EQU $E2 -XX EQU $E3 - ;YY EQU $E4 - ;SHIPY EQU $E4 - ;YADD EQU $E5 - ;LOOP EQU $E6 - ;MEMPTRL EQU $E7 - ;MEMPTRH EQU $E8 - ;NAMEL EQU $E9 - ;NAMEH EQU $EA - ;NAMEX EQU $EB - ;CHAR EQU $EC -DISP_PAGE EQU $ED -DRAW_PAGE EQU $EE + ;COLOR1 = $E0 +COLOR2 = $E1 + ;MATCH = $E2 +XX = $E3 + ;YY = $E4 + ;SHIPY = $E4 + ;YADD = $E5 + ;LOOP = $E6 + ;MEMPTRL = $E7 + ;MEMPTRH = $E8 + ;NAMEL = $E9 + ;NAMEH = $EA + ;NAMEX = $EB + ;CHAR = $EC +DISP_PAGE = $ED +DRAW_PAGE = $EE - ;FIRST EQU $F0 -LASTKEY EQU $F1 - ;PADDLE_STATUS EQU $F2 -XPOS EQU $F3 -YPOS EQU $F4 + ;FIRST = $F0 +LASTKEY = $F1 + ;PADDLE_STATUS = $F2 +XPOS = $F3 +YPOS = $F4 namlo = $f6 @@ -162,102 +154,102 @@ YPOS EQU $F4 -TEMP EQU $FA - ;RUN EQU $FA - ;TEMP2 EQU $FB -TEMPY EQU $FB -INL EQU $FC -INH EQU $FD -OUTL EQU $FE -OUTH EQU $FF +TEMP = $FA + ;RUN = $FA + ;TEMP2 = $FB +TEMPY = $FB +INL = $FC +INH = $FD +OUTL = $FE +OUTH = $FF -KEYPRESS EQU $C000 -KEYRESET EQU $C010 +KEYPRESS = $C000 +KEYRESET = $C010 ;; SOFT SWITCHES -CLR80COL EQU $C000 ; PAGE0/PAGE1 normal -SET80COL EQU $C001 ; PAGE0/PAGE1 switches PAGE0 in Aux instead -EIGHTYCOL EQU $C00D -SPEAKER EQU $C030 -SET_GR EQU $C050 -SET_TEXT EQU $C051 -FULLGR EQU $C052 -TEXTGR EQU $C053 -PAGE0 EQU $C054 -PAGE1 EQU $C055 -LORES EQU $C056 ; Enable LORES graphics -HIRES EQU $C057 ; Enable HIRES graphics -AN3 EQU $C05E ; Annunciator 3 +CLR80COL = $C000 ; PAGE0/PAGE1 normal +SET80COL = $C001 ; PAGE0/PAGE1 switches PAGE0 in Aux instead +EIGHTYCOL = $C00D +SPEAKER = $C030 +SET_GR = $C050 +SET_TEXT = $C051 +FULLGR = $C052 +TEXTGR = $C053 +PAGE0 = $C054 +PAGE1 = $C055 +LORES = $C056 ; Enable LORES graphics +HIRES = $C057 ; Enable HIRES graphics +AN3 = $C05E ; Annunciator 3 -PADDLE_BUTTON0 EQU $C061 -PADDL0 EQU $C064 -PTRIG EQU $C070 +PADDLE_BUTTON0 = $C061 +PADDL0 = $C064 +PTRIG = $C070 ;; BASIC ROUTINES -NORMAL EQU $F273 +NORMAL = $F273 ;; MONITOR ROUTINES -HLINE EQU $F819 ;; HLINE Y,$2C at A -VLINE EQU $F828 ;; VLINE A,$2D at Y -CLRSCR EQU $F832 ;; Clear low-res screen -CLRTOP EQU $F836 ;; clear only top of low-res screen -SETCOL EQU $F864 ;; COLOR=A -TEXT EQU $FB36 -TABV EQU $FB5B ;; VTAB to A -BASCALC EQU $FBC1 ;; -VTAB EQU $FC22 ;; VTAB to CV -HOME EQU $FC58 ;; Clear the text screen -WAIT EQU $FCA8 ;; delay 1/2(26+27A+5A^2) us -SETINV EQU $FE80 ;; INVERSE -SETNORM EQU $FE84 ;; NORMAL -COUT EQU $FDED ;; output A to screen -COUT1 EQU $FDF0 ;; output A to screen -CROUT EQU $FD8E ;; send a RETURN -CROUT1 EQU $FD8B ;; send a RETURN and clear end of line -PRBYTE EQU $FDDA -PRHEX EQU $FDE3 +HLINE = $F819 ;; HLINE Y,$2C at A +VLINE = $F828 ;; VLINE A,$2D at Y +CLRSCR = $F832 ;; Clear low-res screen +CLRTOP = $F836 ;; clear only top of low-res screen +SETCOL = $F864 ;; COLOR=A +TEXT = $FB36 +TABV = $FB5B ;; VTAB to A +BASCALC = $FBC1 ;; +VTAB = $FC22 ;; VTAB to CV +HOME = $FC58 ;; Clear the text screen +WAIT = $FCA8 ;; delay 1/2(26+27A+5A^2) us +SETINV = $FE80 ;; INVERSE +SETNORM = $FE84 ;; NORMAL +COUT = $FDED ;; output A to screen +COUT1 = $FDF0 ;; output A to screen +CROUT = $FD8E ;; send a RETURN +CROUT1 = $FD8B ;; send a RETURN and clear end of line +PRBYTE = $FDDA +PRHEX = $FDE3 ;; Applesoft routines -HCLR EQU $F3F2 -;HGR_PAGE EQU $E6 +HCLR = $F3F2 +;HGR_PAGE = $E6 -COLOR_BLACK EQU 0 -COLOR_RED EQU 1 -COLOR_DARKBLUE EQU 2 -COLOR_PURPLE EQU 3 -COLOR_DARKGREEN EQU 4 -COLOR_GREY EQU 5 -COLOR_MEDIUMBLUE EQU 6 -COLOR_LIGHTBLUE EQU 7 -COLOR_BROWN EQU 8 -COLOR_ORANGE EQU 9 -COLOR_GREY2 EQU 10 -COLOR_PINK EQU 11 -COLOR_LIGHTGREEN EQU 12 -COLOR_YELLOW EQU 13 -COLOR_AQUA EQU 14 -COLOR_WHITE EQU 15 +COLOR_BLACK = 0 +COLOR_RED = 1 +COLOR_DARKBLUE = 2 +COLOR_PURPLE = 3 +COLOR_DARKGREEN = 4 +COLOR_GREY = 5 +COLOR_MEDIUMBLUE = 6 +COLOR_LIGHTBLUE = 7 +COLOR_BROWN = 8 +COLOR_ORANGE = 9 +COLOR_GREY2 = 10 +COLOR_PINK = 11 +COLOR_LIGHTGREEN = 12 +COLOR_YELLOW = 13 +COLOR_AQUA = 14 +COLOR_WHITE = 15 -COLOR_BOTH_BLACK EQU $00 -COLOR_BOTH_RED EQU $11 -COLOR_BOTH_DARKBLUE EQU $22 -COLOR_BOTH_DARKGREEN EQU $44 -COLOR_BOTH_GREY EQU $55 -COLOR_BOTH_MEDIUMBLUE EQU $66 -COLOR_BOTH_LIGHTBLUE EQU $77 -COLOR_BOTH_BROWN EQU $88 -COLOR_BOTH_ORANGE EQU $99 -COLOR_BOTH_PINK EQU $BB -COLOR_BOTH_LIGHTGREEN EQU $CC -COLOR_BOTH_YELLOW EQU $DD -COLOR_BOTH_AQUA EQU $EE -COLOR_BOTH_WHITE EQU $FF +COLOR_BOTH_BLACK = $00 +COLOR_BOTH_RED = $11 +COLOR_BOTH_DARKBLUE = $22 +COLOR_BOTH_DARKGREEN = $44 +COLOR_BOTH_GREY = $55 +COLOR_BOTH_MEDIUMBLUE = $66 +COLOR_BOTH_LIGHTBLUE = $77 +COLOR_BOTH_BROWN = $88 +COLOR_BOTH_ORANGE = $99 +COLOR_BOTH_PINK = $BB +COLOR_BOTH_LIGHTGREEN = $CC +COLOR_BOTH_YELLOW = $DD +COLOR_BOTH_AQUA = $EE +COLOR_BOTH_WHITE = $FF -AUX_BOTH_MEDIUMBLUE EQU $33 ; 0011 0011 -AUX_BOTH_GREY EQU $AA ; 1010 1010 +AUX_BOTH_MEDIUMBLUE = $33 ; 0011 0011 +AUX_BOTH_GREY = $AA ; 1010 1010