mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-12-25 20:30:31 +00:00
pt3_lib: clean up zero-page usage
make it more clear how much space you need for player
This commit is contained in:
parent
42579e47ad
commit
2a9cca9a04
91
pt3_lib/hardware.inc
Normal file
91
pt3_lib/hardware.inc
Normal file
@ -0,0 +1,91 @@
|
||||
;; Firmware Routines and Hardware Locations
|
||||
|
||||
|
||||
KEYPRESS = $C000
|
||||
KEYRESET = $C010
|
||||
|
||||
;; SOFT SWITCHES
|
||||
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 = $C061
|
||||
PADDL0 = $C064
|
||||
PTRIG = $C070
|
||||
|
||||
;; BASIC ROUTINES
|
||||
|
||||
NORMAL = $F273
|
||||
|
||||
;; MONITOR ROUTINES
|
||||
|
||||
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 = $F3F2
|
||||
;HGR_PAGE = $E6
|
||||
|
||||
|
||||
|
||||
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 = $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 = $33 ; 0011 0011
|
||||
AUX_BOTH_GREY = $AA ; 1010 1010
|
@ -17,9 +17,6 @@
|
||||
; $fffe vector with this, but that does mean we have
|
||||
; to be sure status flag and accumulator set properly
|
||||
|
||||
|
||||
TIME_OFFSET EQU 13
|
||||
|
||||
interrupt_handler:
|
||||
php ; save status flags
|
||||
pha ; save A ; 3
|
||||
|
@ -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
|
||||
|
||||
|
||||
;========================
|
||||
|
@ -7,6 +7,9 @@
|
||||
; zero page definitions
|
||||
.include "zp.inc"
|
||||
|
||||
; some firmware locations
|
||||
.include "hardware.inc"
|
||||
|
||||
; Location the files load at.
|
||||
; If you change this, you need to update the Makefile
|
||||
|
||||
|
308
pt3_lib/zp.inc
308
pt3_lib/zp.inc
@ -1,263 +1,67 @@
|
||||
.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
|
||||
; overlap applesoft 67-6a,6f,70,af,b0,ca-cd,d8
|
||||
|
||||
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
|
||||
|
||||
; DOS33: Confirmed kills $68
|
||||
PATTERN_L = $7E
|
||||
PATTERN_H = $7F
|
||||
ORNAMENT_L = $80
|
||||
ORNAMENT_H = $81
|
||||
SAMPLE_L = $82
|
||||
SAMPLE_H = $83
|
||||
|
||||
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
|
||||
LOOP = $84
|
||||
MB_VALUE = $85
|
||||
MB_ADDRL = $86
|
||||
MB_ADDRH = $87
|
||||
DONE_PLAYING = $88
|
||||
DONE_SONG = $89
|
||||
|
||||
|
||||
;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
|
||||
|
||||
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
|
||||
|
||||
PATTERN_L EQU $80
|
||||
PATTERN_H EQU $81
|
||||
ORNAMENT_L EQU $82
|
||||
ORNAMENT_H EQU $83
|
||||
SAMPLE_L EQU $84
|
||||
SAMPLE_H EQU $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
|
||||
|
||||
; 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
|
||||
|
||||
;FIRST EQU $F0
|
||||
LASTKEY EQU $F1
|
||||
;PADDLE_STATUS EQU $F2
|
||||
XPOS EQU $F3
|
||||
YPOS EQU $F4
|
||||
|
||||
|
||||
namlo = $f6
|
||||
namhi = $f7
|
||||
step = $f8 ; state for stepper motor
|
||||
tmptrk = $f9 ; temporary copy of current track
|
||||
phase = $fa ; current phase for /seek
|
||||
|
||||
|
||||
|
||||
TEMP EQU $FA
|
||||
;RUN EQU $FA
|
||||
;TEMP2 EQU $FB
|
||||
TEMPY EQU $FB
|
||||
INL EQU $FC
|
||||
INH EQU $FD
|
||||
OUTL EQU $FE
|
||||
OUTH EQU $FF
|
||||
|
||||
|
||||
|
||||
KEYPRESS EQU $C000
|
||||
KEYRESET EQU $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
|
||||
|
||||
PADDLE_BUTTON0 EQU $C061
|
||||
PADDL0 EQU $C064
|
||||
PTRIG EQU $C070
|
||||
|
||||
;; BASIC ROUTINES
|
||||
|
||||
NORMAL EQU $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
|
||||
|
||||
;; Applesoft routines
|
||||
HCLR EQU $F3F2
|
||||
;HGR_PAGE EQU $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_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
|
||||
|
||||
AUX_BOTH_MEDIUMBLUE EQU $33 ; 0011 0011
|
||||
AUX_BOTH_GREY EQU $AA ; 1010 1010
|
||||
TEMP = $FA
|
||||
|
Loading…
Reference in New Issue
Block a user