1
0
mirror of https://github.com/fadden/6502bench.git synced 2024-11-26 21:49:45 +00:00

Merge pull request #5 from david-schmidt/Apple3Flesh

Fleshing out the Apple3 some more
This commit is contained in:
Andy McFadden 2018-09-28 21:42:41 -07:00 committed by GitHub
commit 3ca01d7dd0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 500 additions and 43 deletions

View File

@ -2,23 +2,39 @@
; See the LICENSE.txt file for distribution terms (Apache 2.0).
;
; Adapted from Apple /// reference materials
;
;
*SYNOPSIS Symbols from hardware I/O areas
KBD @ $C000 ;last key pressed + 128
KBD @ $C000 ;last key pressed
KBDFLG @ $C008 ;
KBDSTRB @ $C010 ;RW keyboard strobe
SPKR @ $C030 ;RW toggle speaker (Apple II type)
SPKRIII @ $C040 ;RW beeps speaker (Apple /// type)
JOYRDY @ $C066 ;
CLOCK @ $C070 ;clock
PHASOFF @ $C080 ;
PHASON @ $C081 ;
MOTOROFF @ $C088 ;
MOTORON @ $C089 ;
DRV0EN @ $C08A ;
DRV1EN @ $C08B ;
Q6L @ $C08C ;
Q6H @ $C08D ;
Q7L @ $C08E ;
ACIASTAT @ $C0F1 ;status of ACIA
; Other hardware registers
Z_REG @ $FFD0
D_DDRB @ $FFD2
D_DDRA @ $FFD3
Z_REG @ $FFD0 ;zero page register
D_DDRB @ $FFD2 ;data direction register B
D_DDRA @ $FFD3 ;data direction register A
TIMER1L @ $FFD8
TIMLATCH @ $FFD9
D_ACR @ $FFDB
D_PCR @ $FFDC
D_IFR @ $FFDD
D_IER @ $FFDE
E_REG @ $FFDF ;environment register (r/w)
E_REG @ $FFDF ;environment register
E_IORB @ $FFE0
E_DDRB @ $FFE2
E_DDRA @ $FFE3
@ -26,4 +42,4 @@ E_ACR @ $FFEB
E_PCR @ $FFEC
E_IFR @ $FFED
E_IER @ $FFEE
B_REG @ $FFEF
B_REG @ $FFEF ;bank switch register

View File

@ -6,13 +6,454 @@
*SYNOPSIS Symbols from the Apple /// monitor ROM
;
; Zero page usage by monitor.
;
LMARGIN @ $58 ;left viewport margin
RMARGIN @ $59 ;right viewport margin
WINTOP @ $5A ;top of viewport
WINBTM @ $5B ;bottom of viewport
CH @ $5C ;
CV @ $5D ;
BAS4L @ $5E ;
BAS4H @ $5F ;
BAS8L @ $60 ;
BAS8H @ $61 ;
TBAS4L @ $62 ;
TBAS4H @ $63 ;
TBAS8L @ $64 ;
TBAS8H @ $65 ;
FORGND @ $66 ;
BKGND @ $67 ;
MODES @ $68 ;
CURSOR @ $69 ;
STACK @ $6A ;
PROMPT @ $6B ;
TEMPX @ $6C ;
TEMPY @ $6D ;
CSWL @ $6E ;
CSWH @ $6F ;
KSWL @ $70 ;
KSWH @ $71 ;
PCL @ $72 ;
PCH @ $73 ;
A1L @ $74 ;
A1H @ $75 ;
A2L @ $76 ;
A2H @ $77 ;
A3L @ $78 ;
A3H @ $79 ;
A4L @ $7A ;
A4H @ $7B ;
STATE @ $7C ;
YSAV @ $7D ;
INBUF @ $7E ;
;
; Useful ROM routines.
; Zero page used by floppy.
;
HRDERRS @ $80 ;
IBSLOT @ $81 ;
IBDRVN @ $82 ;
IBTRK @ $83 ;
IBSECT @ $84 ;
IBBUFP @ $85 ;
IBCMD @ $87 ;
IBSTAT @ $88 ;
IBSMOD @ $89 ;
;CSUM @ $89 ;
IOBPDN @ $8A ;
IMASK @ $8B ;
CURTRK @ $8C ;
;DRVOTRK @ $85 ;
RETRYCNT @ $93 ;
SEEKCNT @ $94 ;
BUF @ $9B ;
ENVTEMP @ $9F ;
COUNT @ $95 ;
CKSUM @ $96 ;
CSSTV @ $97 ;
PRIOR @ $9D ;
TRKN @ $9E ;
MONTIMEL @ $99 ;
MONTIMEH @ $9A ;
TWOMEG @ $7F ;fast speed
SECT @ $98 ;
;TRACK @ $99 ;
;VOLUME @ $9A ;
;
; Floppy driver ROM routines.
;
REGRWTS @ $F000 ;
DRIVSEL @ $F035 ;
DRVWAIT @ $F041 ;
OK @ $F048 ;
MOTOF @ $F052 ;
CONWAIT @ $F054 ;
NODRIVERR @ $F064 ;
TRYTRK @ $F069 ;
TRYTRK2 @ $F07F ;
TRYADR @ $F083 ;
TRYADR2 @ $F08A ;
GOCAL1 @ $F0A6 ;
GOCAL @ $F0A7 ;
RDRIGHT @ $F0AC ;
RTTRK @ $F0C0 ;
CORRECTVOL @ $F0C4 ;
ALLDONE @ $F0E3 ;
DRVERR @ $F0E8 ;
HNDLERR @ $F0EA ;
ALDONE1 @ $F0EB ;
WRIT @ $F0F9 ;
MYSEEK @ $F104 ;
SEEK1 @ $F105 ;
GOSEEK @ $F115 ;
ALLOFF @ $F118 ;
NXOFF @ $F11A ;
SETTRK @ $F125 ;
CHKDRV @ $F12B ;
CHKDRV1 @ $F12D ;
CKDRTS @ $F13D ;
DRVINDX @ $F13E ;
READ16 @ $F148 ;
RSYNC @ $F14A ;
RD1 @ $F14D ;
RSYNC1 @ $F152 ;
RD2 @ $F157 ;
RD3 @ $F163 ;
RD4 @ $F16E ;
RD5 @ $F180 ;
RD5A @ $F181 ;
RD6 @ $F195 ;
RDCKSUM @ $F1A0 ;
CHKINT @ $F1AA ;
GOSERV @ $F1B4 ;
RDERR @ $F1B7 ;
RDADR16 @ $F1B9 ;
RDASYN @ $F1BD ;
RDA1 @ $F1C4 ;
RDASN1 @ $F1C9 ;
RDA2 @ $F1CE ;
RDA3 @ $F1D9 ;
RDAFLD @ $F1E5 ;
RDA4 @ $F1E7 ;
RDA5 @ $F1EF ;
RDA6 @ $F201 ;
RDA7 @ $F20B ;
RDEXIT @ $F214 ;
WEXIT @ $F215 ;
WRITE16 @ $F216 ;
WRIT1 @ $F220 ;
WSYNC @ $F22D ;
WINTRPT @ $F24B ;
VRYFRST @ $F253 ;
WRTFRST @ $F255 ;
WNTRPRT1 @ $F264 ;
WMIDLE @ $F267 ;
WDATA2 @ $F26E ;
WDATA3 @ $F27E ;
WRCKSUM @ $F292 ;
WRBITSLMK @ $F297 ;
NOWRITE @ $F2A3 ;
SERVICE @ $F2AA ;
WNIBL9 @ $F2BA ;
WNIBL7 @ $F2BB ;
WNIBL @ $F2BD ;
PRENIB16 @ $F2C4 ;
PRENIB1 @ $F2C8 ;
PRENIB3 @ $F2E2 ;
PRENIB2 @ $F2E5 ;
PRENIB4 @ $F2F6 ;
POSTNIB16 @ $F30F ;
PNIBL1 @ $F314 ;
PNIBL2 @ $F323 ;
POST1 @ $F336 ;
POST2 @ $F338 ;
;POSTERR @ $F34C ;
SET1MEG @ $F34C ;
SEV @ $F354 ;
SEEK @ $F400 ;
SEEK2 @ $F40A ;
OUT @ $F41B ;
MINTST @ $F41F ;
MAXTST @ $F425 ;
STEP @ $F429 ;
STEP2 @ $F42B ;
SEEKEND @ $F444 ;
SETPHASE @ $F448 ;
CLRPHASE @ $F44A ;
SEEKRTS @ $F455 ;
MSWAIT @ $F456 ;
MSW1 @ $F458 ;
MSW2 @ $F461 ;
BLOCKIO @ $F479 ;
TRKSEC @ $F47E ;
QUIT @ $F49D ;
ANALOG @ $F4A8 ;
ANLOG1 @ $F4AB ;
GOODTIME @ $F4C4 ;
;
; Diagnostics ROM routines.
;
CHPG @ $F4CD ;
DISK1 @ $F513 ;
NXBYT @ $F524 ;
NXBIT @ $F526 ;
NOGOOD @ $F52A ;
CNTWR @ $F523 ;
PULBT @ $F53A ;
NOMEM @ $F548 ;
NMEM1 @ $F54F ;
NMEM2 @ $F562 ;
ERRLP @ $F575 ;
ERRLP1 @ $F593 ;
RAMWT1 @ $F5A1 ;
RAMWT2 @ $F5A5 ;
RAMWT4 @ $F5AD ;
ZP1 @ $F5BE ;
ZP2 @ $F5D4 ;
ZP3 @ $F5E2 ;
ROMTST @ $F5E7 ;
ROMTST1 @ $F5F2 ;
ROMTST2 @ $F5FE ;
VIATST @ $F60D ;
ACIA @ $F63E ;
ATD @ $F653 ;
ADCTST1 @ $F663 ;
ADCTST3 @ $F669 ;
ADCERR @ $F676 ;
KEYPLUG @ $F67B ;
RECON @ $F686 ;
BOOT @ $F6A1 ;
GOBOOT @ $F6BF ;
SEX @ $F6C2 ;
SEX1 @ $F6C4 ;
SEX2 @ $F6CE ;
SEX3 @ $F6D4 ;
USRENTRY @ $F6E6 ;
RAMTST0 @ $F6F4 ;
RAMTST1 @ $F6FD ;
RAMTST4 @ $F70F ;
RAMTST6 @ $F72A ;
STRWT @ $F738 ;
RAM @ $F748 ;
RAM0 @ $F76B ;
RAM00 @ $F772 ;
RAM1 @ $F776 ;
MESSERR @ $F77B ;
ERROR @ $F77E ;
RAMSET @ $F784 ;
RAMSET1 @ $F78D ;
PTRINC @ $F7A1 ;
PINC2 @ $F7B6 ;
PINC1 @ $F7B8 ;
RETS @ $F7C3 ;
RAMERR @ $F7C9 ;
RAMERR2 @ $F7D6 ;
RAMERR3 @ $F7DA ;
RAMERR4 @ $F7E9 ;
RAMERR5 @ $F7F0 ;
RAMWT @ $F7F6 ;
RAMRD @ $F7FA ;
;
; Monitor ROM routines.
;
RET1 @ $F7FE ;
RET3 @ $F882 ;
RET2 @ $F900 ;
ENTRY @ $F901 ;
MON @ $F904 ;
MONZ @ $F908 ;
SCAN @ $F912 ;
NXTINP @ $F915 ;
CMDSRCH @ $F91C ;
GETNUM @ $F92C ;
NXTCHR @ $F932 ;
DIGIT @ $F941 ;
NXTBIT @ $F947 ;
NXTBAS @ $F94F ;
NXTBS2 @ $F959 ;
TOSUB @ $F95E ;
ZSTATE @ $F967 ;
DIGRET @ $F96B ;
NXTA4 @ $F98E ;
NXTA1 @ $F994 ;
TSTA1 @ $F99D ;
RETA1 @ $F9AD ;
PRBYTE @ $F9AE ;
PRHEX @ $F9B7 ;
PRHEXZ @ $F9B9 ;
PRHEX2 @ $F9C1 ;
PRBYCOL @ $F9C4 ;
PRCOLON @ $F9C7 ;
TST80WID @ $F9CB ;
SVMASK @ $F9D3 ;
A1PC @ $F9D6 ;
A1PC1 @ $F9D9 ;
OLDPC @ $F9E0 ;
ASCII1 @ $F9E1 ;
ASCII2 @ $F9E3 ;
ASCII3 @ $F9F4 ;
CRCHK @ $F9FD ;
ASCDONE @ $FA08 ;
SEARCH @ $FA09 ;
SRCH1 @ $FA15 ;
ASCII @ $FA1B ;
ASCII0 @ $FA1D ;
CKMDE @ $FA1E ;
BITON @ $FA25 ;
BITOFF @ $FA29 ;
REPEAT @ $FA2D ;
REPEAT1 @ $FA35 ;
LFA36 @ $FA36 ;
CRMON @ $FA3A ;
MOVE @ $FA40 ;
MOVNXT @ $FA45 ;
VRFY @ $FA4F ;
VRFY1 @ $FA54 ;
VRFY2 @ $FA60 ;
MISMATCH @ $FA66 ;
PRINTA1 @ $FA75 ;
PRA1BYTE @ $FA82 ;
PRBYTSP @ $FA84 ;
PRSPC @ $FA87 ;
USER @ $FA8C ;
JUMP @ $FA8F ;
GO @ $FA91 ;
RWERROR @ $FA97 ;
ERROR2 @ $FA9F ;
ERROR @ $FAA2 ;
DEST @ $FAA5 ;
SEP @ $FAAE ;
BL1 @ $FAB4 ;
SPCE @ $FAB8 ;
STOR @ $FABF ;
STOR1 @ $FAC3 ;
DUMMY @ $FACB ;
SETMODE @ $FACC ;
SETMDZ @ $FAD1 ;
READ @ $FAD4 ;
WRTE @ $FAD7 ;
SAVCMD @ $FAD9 ;
RWLOOP @ $FADB ;
NOVER @ $FAF3 ;
DUMP8 @ $FAFD ;
TSTDUMP @ $FB0A ;
ERROR1 @ $FB0B ;
DUMP @ $FB0D ;
DUMP0 @ $FB10 ;
DUMP1 @ $FB1D ;
DUMP2 @ $FB20 ;
DUMP3 @ $FB30 ;
DUMPASC @ $FB35 ;
ASC1 @ $FB40 ;
ASC2 @ $FB4C ;
ASC3 @ $FB5A ;
COL80 @ $FB5D ;
COL40 @ $FB63 ;
SET80 @ $FB67 ;
SET80A @ $FB6F ;
SET80B @ $FB7B ;
CLSCRN @ $FB7D ;
CLEOP @ $FB85 ;
CLEOP1 @ $FB8E ;
CLEOL @ $FBA2 ;
CONTROL @ $FBA7 ;
TSTCR @ $FBAB ;
CARRAGE @ $FBAF ;
CURUP @ $FBB8 ;
CURUP1 @ $FBC2 ;
SETCV @ $FBC5 ;
BASCALC @ $FBC7 ;
CURIGHT @ $FBCB ;
RIGHT1 @ $FBD1 ;
SETCHZ @ $FBD7 ;
SETCVH @ $FBDB ;
CURDOWN @ $FBDD ;
TSTBACK @ $FBE9 ;
CURLEFT @ $FBED ;
LEFT80 @ $FBF3 ;
LEFTUP @ $FBFD ;
COUT2 @ $FC06 ;
DISPLAYX @ $FC10 ;
INCHORZ @ $FC13 ;
NXTLIN @ $FC16 ;
BASCALC1 @ $FC19 ;
BSCLC2 @ $FC2D ;
CTRLRET @ $FC38 ;
COUT @ $FC39 ;
COUT1 @ $FC47 ;
TSTBELL @ $FC4A ;
BELL @ $FC4E ;
LNFD @ $FC52 ;
SCROLL @ $FC5B ;
SCRL1 @ $FC61 ;
SCRL2 @ $FC63 ;
SCRL3 @ $FC7A ;
LASTLN @ $FC87 ;
CLEOL1 @ $FC89 ;
CLEOL2 @ $FC91 ;
DISPLAY @ $FC9D ;
DSPBKGND @ $FCAA ;
DSPL80 @ $FCAD ;
NOTCR @ $FCB8 ;
CANCEL @ $FCCD ;
GETLN @ $FCD5 ;
BKSPCE @ $FCDE ;
NXTCHAR @ $FCE4 ;
CROUT @ $FCEF ;
STOPLST @ $FD02 ;
NOSTOP @ $FD07 ;
RDKEY @ $FD0C ;
KEYIN @ $FD0F ;
KEYIN1 @ $FD16 ;
KEYIN2 @ $FD24 ;
KEYIN3 @ $FD2E ;
KEYIN4 @ $FD31 ;
KEYWAIT @ $FD35 ;
KWAIT2 @ $FD42 ;
KEYRET @ $FD47 ;
ESC3 @ $FD48 ;
ESCAPE @ $FD4B ;
ESC1 @ $FD53 ;
ESC2 @ $FD58 ;
RDCHAR @ $FD60 ;
GOESC @ $FD77 ;
PICK @ $FD88 ;
PICK40 @ $FD95 ;
CLDSTRT @ $FD98 ;
SETUP @ $FD9D ;
SETUP1 @ $FDA2 ;
GENENTR @ $FDC6 ;
ZIPTEMPS @ $FDD5 ;
GENASC @ $FDE1 ;
GASCI1 @ $FDE3 ;
GASCI2 @ $FDE5 ;
GASCI3 @ $FDE7 ;
GASCI4 @ $FDF4 ;
CBYTES @ $FE01 ;
CCOLMS @ $FE05 ;
CSHFT @ $FE07 ;
SHFTCNT @ $FE1A ;
;DONE @ $FE28 ;
STORCHRS @ $FE28 ;
STORSET @ $FE2A ;
STOROW @ $FE2C ;
GENDONE @ $FE44 ;
GEN1 @ $FE48 ;
NXTASCI @ $FE63 ;
NXTASC2 @ $FE65 ;
GEN2 @ $FE75 ;
UNDER @ $FE79 ;
ALTCHR @ $FE88 ;
ALTC1 @ $FE8A ;
NXTPORT @ $FE99 ;
NOHIGH @ $FEA3 ;
PORTDN @ $FEAD ;
VRETRCE @ $FEAE ;
VWAIT @ $FEBF ;
CHRSETPRE @ $FEC4 ;
NMIRQ @ $FFBC ;

View File

@ -3,45 +3,45 @@
;
; Source: SOS programmer's guide
*SYNOPSIS SOS public addresses and constants.
*SYNOPSIS SOS constants.
; SOS MLI function codes.
*TAG SOS-MLI-Functions
SOS_REQUEST_SEG = $40
SOS_FIND_SEG = $41
SOS_CHANGE_SEG = $42
SOS_GET_SEG_INFO = $43
SOS_GET_SEG_NUM = $44
SOS_RELEASE_SEG = $45
SOS_REQUEST_SEG = $40
SOS_FIND_SEG = $41
SOS_CHANGE_SEG = $42
SOS_GET_SEG_INFO = $43
SOS_GET_SEG_NUM = $44
SOS_RELEASE_SEG = $45
SOS_QUIT = $65
SOS_QUIT = $65
SOS_READBLOCK = $80
SOS_WRITEBLOCK = $81
SOS_GET_TIME = $82
SOS_D_STATUS = $82
SOS_D_CONTROL = $83
SOS_GET_DEV_NUM = $84
SOS_D_INFO = $85
SOS_READBLOCK = $80
SOS_WRITEBLOCK = $81
SOS_GET_TIME = $82
SOS_D_STATUS = $82
SOS_D_CONTROL = $83
SOS_GET_DEV_NUM = $84
SOS_D_INFO = $85
SOS_CREATE = $C0
SOS_DESTROY = $C1
SOS_RENAME = $C2
SOS_SET_FILE_INFO = $C3
SOS_GET_FILE_INFO = $C4
SOS_VOLUME = $C5
SOS_SET_PREFIX = $C6
SOS_GET_PREFIX = $C7
SOS_OPEN = $C8
SOS_NEWLINE = $C9
SOS_READFILE = $CA
SOS_WRITEFILE = $CB
SOS_CLOSE = $CC
SOS_FLUSH = $CD
SOS_SET_MARK = $CE
SOS_GET_MARK = $CF
SOS_SET_EOF = $D0
SOS_GET_EOF = $D1
SOS_SET_LEVEL = $D2
SOS_GET_LEVEL = $D3
SOS_CREATE = $C0
SOS_DESTROY = $C1
SOS_RENAME = $C2
SOS_SET_FILE_INFO = $C3
SOS_GET_FILE_INFO = $C4
SOS_VOLUME = $C5
SOS_SET_PREFIX = $C6
SOS_GET_PREFIX = $C7
SOS_OPEN = $C8
SOS_NEWLINE = $C9
SOS_READFILE = $CA
SOS_WRITEFILE = $CB
SOS_CLOSE = $CC
SOS_FLUSH = $CD
SOS_SET_MARK = $CE
SOS_GET_MARK = $CF
SOS_SET_EOF = $D0
SOS_GET_EOF = $D1
SOS_SET_LEVEL = $D2
SOS_GET_LEVEL = $D3