mirror of
https://github.com/fadden/6502bench.git
synced 2024-12-01 22:50:35 +00:00
148 lines
6.0 KiB
Plaintext
148 lines
6.0 KiB
Plaintext
|
; Copyright 2018 faddenSoft. All Rights Reserved.
|
||
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
||
|
;
|
||
|
; Sources:
|
||
|
; NiftyList, by Dave Lyons
|
||
|
; What's Where in the Apple, by William F. Luebbert
|
||
|
|
||
|
*SYNOPSIS Symbols from the Apple II monitor ROM
|
||
|
|
||
|
WNDLEFT @ $20 ;left column of scroll window
|
||
|
WNDWDTH @ $21 ;width of scroll window
|
||
|
WNDTOP @ $22 ;top of scroll window
|
||
|
WNDBTM @ $23 ;bottom of scsroll window
|
||
|
CH @ $24 ;cursor horizontal displacement
|
||
|
CV @ $25 ;cursor vertical displacement
|
||
|
GBASL @ $26 ;base address for lo-res drawing
|
||
|
INVFLAG @ $32 ;text mask (255=normal, 127=flash, 63=inv)
|
||
|
PROMPT @ $33 ;prompt character
|
||
|
CSWL @ $36 ;character output hook (lo)
|
||
|
CSWH @ $37 ;character output hook (hi)
|
||
|
KSWL @ $38 ;character input hook (lo)
|
||
|
KSWH @ $39 ;character input hook (hi)
|
||
|
PCL @ $3A ;program counter save
|
||
|
PCH @ $3B ;program counter save
|
||
|
A1L @ $3C ;general purpose
|
||
|
A1H @ $3D ;general purpose
|
||
|
|
||
|
SPDBYT @ $E7 ;text output speed limiter
|
||
|
|
||
|
BRKV @ $03f0 ;address of BRK handler
|
||
|
SOFTEVEC @ $03f2 ;address of RESET handler
|
||
|
PWREDUP @ $03f4 ;power-up RESET checksum
|
||
|
USRADDR @ $03F8 ;jump to function that handles monitor Ctrl-Y
|
||
|
NMIVEC @ $03FB ;jump to function that handles NMI
|
||
|
IRQADDR @ $03FE ;address of IRQ handler
|
||
|
|
||
|
PLOT @ $F800 ;lo-res plot at X=Y-reg, Y=Acc
|
||
|
PLOT1 @ $F80E ;lo-res plot at X=Y-reg, Y per GBASL/H
|
||
|
HLINE @ $F819 ;lo-res horiz line at Y=Acc with X from $2c
|
||
|
VLINE @ $F828 ;lo-res vert line at X=Y-reg and Y from Acc to $2b
|
||
|
CLRSCR @ $F832 ;clear lo-res screen to black
|
||
|
CLRTOP @ $F836 ;clear top part of lo-res screen to black
|
||
|
GBASCALC @ $F847 ;compute gfx base addr for line in Acc
|
||
|
NXTCOL @ $F85F ;change lo-res color to (color)+3
|
||
|
SETCOL @ $F864 ;set lo-res color to Acc
|
||
|
SCRN @ $F871 ;load Acc with lo-res value at Y=Acc, X=X-reg
|
||
|
INSDS1_2 @ $F88C
|
||
|
INSDS2 @ $F88E
|
||
|
GET816LEN @ $F890
|
||
|
INSTDSP @ $F8D0 ;monitor/mini-asm display
|
||
|
PRNTYX @ $F940 ;print Y-reg/X-reg as 4 hex digits
|
||
|
PRNTAX @ $F941 ;print Acc/X-reg as 4 hex digits
|
||
|
PRNTX @ $F944 ;print X-reg as 2 hex digits
|
||
|
PRBLNK @ $F948 ;print 3 spaces
|
||
|
PRBL2 @ $F94A
|
||
|
PCADJ @ $F953 ;monitor/mini-asm PC adjust
|
||
|
TEXT2COPY @ $F962
|
||
|
OLDIRQ @ $FA40 ;autostart ROM IRQ handler
|
||
|
BREAK @ $FA4C
|
||
|
OLDBRK @ $FA59
|
||
|
RESET @ $FA62
|
||
|
PWRUP @ $FAA6
|
||
|
SLOOP @ $FABA
|
||
|
REGDSP @ $FAD7 ;display register contents
|
||
|
RTBL @ $FB19
|
||
|
PREAD @ $FB1E ;read paddle specifed by X-reg, return in Y-reg
|
||
|
PREAD4 @ $FB21
|
||
|
INIT @ $FB2F ;screen initialization
|
||
|
SETTXT @ $FB39 ;set screen to text mode
|
||
|
SETGR @ $FB40 ;set screen to graphics mode
|
||
|
SETWND @ $FB4B ;set normal low-res graphics window
|
||
|
SETWND2 @ $FB51
|
||
|
TABV @ $FB5B ;place cursor at line (A-reg) and column (ch)
|
||
|
APPLEII @ $FB60 ;clear screen and put "Apple II" into first line
|
||
|
SETPWRC @ $FB6F
|
||
|
VIDWAIT @ $FB78
|
||
|
KBDWAIT @ $FB88
|
||
|
VERSION @ $FBB3
|
||
|
ZIDBYTE2 @ $FBBF
|
||
|
ZIDBYTE @ $FBC0
|
||
|
BASCALC @ $FBC1 ;calculate text base address
|
||
|
BELL1 @ $FBDD ;sound bell regardless of output device
|
||
|
BELL1_2 @ $FBE2
|
||
|
BELL2 @ $FBE4 ;sound bell
|
||
|
STORADV @ $FBF0
|
||
|
ADVANCE @ $FBF4 ;move cursor right
|
||
|
VIDOUT @ $FBFD ;output Acc as text
|
||
|
BS @ $FC10 ;move cursor left
|
||
|
UP @ $FC1A ;move cursor up
|
||
|
VTAB @ $FC22 ;tab to row specified in Acc
|
||
|
VTABZ @ $FC24
|
||
|
CLREOP @ $FC42 ;clear screen from cursor to end of page
|
||
|
HOME @ $FC58 ;clear screen and reset text output to top-left
|
||
|
CR @ $FC62 ;perform a carriage return
|
||
|
LF @ $FC66 ;perform a line feed
|
||
|
SCROLL @ $FC70 ;scroll up 1 line
|
||
|
CLREOL @ $FC9C ;clear to end of line
|
||
|
CLREOLZ @ $FC9E
|
||
|
WAIT @ $FCA8 ;delay for (26 + 27*Acc + 5*(Acc*Acc))/2 cycles
|
||
|
NXTA4 @ $FCB4 ;increment A4
|
||
|
NXTA1 @ $FCBA ;increment A1
|
||
|
HEADR @ $FCC9 ;write cassette sync
|
||
|
WRTAPE @ $FCE5 ;casssette write
|
||
|
RDKEY @ $FD0C ;read key
|
||
|
FD10 @ $FD10
|
||
|
RDKEY1 @ $FD18
|
||
|
KEYIN @ $FD1B ;get next key input from keyboard hardware
|
||
|
RDCHAR @ $FD35 ;calls RDKEY to get next char
|
||
|
GETLNZ @ $FD67 ;get a line of input
|
||
|
GETLN @ $FD6A ;get a lint of input
|
||
|
GETLN0 @ $FD6C
|
||
|
GETLN1 @ $FD6F
|
||
|
CROUT1 @ $FD8B
|
||
|
CROUT @ $FD8E ;print a carriage return
|
||
|
PRA1 @ $FD92 ;print CR, then hex of A1H/A1L, then minus sign
|
||
|
PRBYTE @ $FDDA ;print Acc as two-digit hex number
|
||
|
PRHEX @ $FDE3 ;print right nibble of Acc as single hex digit
|
||
|
COUT @ $FDED ;print Acc to output device
|
||
|
COUT1 @ $FDF0
|
||
|
COUTZ @ $FDF6
|
||
|
IDROUTINE @ $FE1F
|
||
|
MOVE @ $FE2C ;memory move A1/A2 to A4
|
||
|
LIST @ $FE5E ;disassemble 20 instructions (not on GS)
|
||
|
SETINV @ $FE80 ;set video mode to inverse
|
||
|
SETNORM @ $FE84 ;set video mode to normal
|
||
|
SETKBD @ $FE89 ;reset char input handler to ROM
|
||
|
INPORT @ $FE8B
|
||
|
SETVID @ $FE93 ;reset char output handler to ROM
|
||
|
OUTPORT @ $FE95
|
||
|
GO @ $FEB6
|
||
|
WRITE @ $FECD ;write data to cassette
|
||
|
READ @ $FEFD ;read data from cassette
|
||
|
PRERR @ $FF2D ;print "ERR" and sound bell
|
||
|
BELL @ $FF3A ;sound bell
|
||
|
RESTORE @ $FF3F ;restore 6502 registers from $45-48
|
||
|
SAVE @ $FF4A ;save 6502 registers to $45-49
|
||
|
IORTS @ $FF58 ;JSR here to find out where one is
|
||
|
OLDRST @ $FF59 ;RESET entry point
|
||
|
MON @ $FF65 ;normal entry to monitor
|
||
|
MONZ @ $FF69 ;reset and enter monitor
|
||
|
MONZ2 @ $FF6C
|
||
|
MONZ4 @ $FF70
|
||
|
DIG @ $FF8A
|
||
|
GETNUM @ $FFA7
|
||
|
NXTCHR @ $FFAD ;part of GETLN input loop
|
||
|
TOSUB @ $FFBE
|
||
|
ZMODE @ $FFC7
|