NEW AUTO 3,1 *-------------------------------------- AUXPIPE .EQ 1 *-------------------------------------- ZPKERNEL .EQ $0 *-------------------------------------- ZPPtr1 .EQ ZPKERNEL ZPPtr2 .EQ ZPKERNEL+2 ZPPtr3 .EQ ZPKERNEL+4 ZPPtr4 .EQ ZPKERNEL+6 pFD .EQ ZPKERNEL+8 pDRV .EQ ZPKERNEL+10 pIOCTL .EQ ZPKERNEL+12 pIOBuf .EQ ZPKERNEL+14 *-------------------------------------- ZPMEMMGR .EQ $10 *-------------------------------------- SIGNFLG .EQ $16 COS,SIN,TAN *-------------------------------------- * AuxMove / XFer *-------------------------------------- A1L .EQ $3C A2L .EQ $3E A4L .EQ $42 XFer.JMP .EQ $3ED AuxMove .EQ $C311 XFer .EQ $C314 CS:M->X, VS:Use Aux ZP *-------------------------------------- * $42-$47 ProDOS Block Device Drivers Main *-------------------------------------- DRV.BLK.Cmd .EQ $42 DRV.BLK.UnitNum .EQ $43 DRV.BLK.Buf .EQ $44 DRV.BLK.BlkNum .EQ $46 *-------------------------------------- * $5E-$C8 RESERVED APPLESOFT Main/Aux (ROM Call, no need to switch back MainZP) *-------------------------------------- *INDEX .EQ $5E ->$5F LOAD.FAC.FROM.YA *DEST .EQ $60 ->$61 used in FCOMP RESULT .EQ $62 ->$66 used in FMULT FDIV TMP32.Sign .EQ RESULT TMP32 .EQ RESULT+1 *-------------------------------------- ZPTMP .EQ $67 ->$84 29 bytes *-------------------------------------- FORPNT .EQ $85 ->$86 Used in GETFAC FAC .EQ $9D ->$A1 FAC.SIGN .EQ $A2 * FAC.EXTENSION .EQ $AC *-------------------------------------- ACC32.Sign .EQ FAC ACC32 .EQ FAC+1 *-------------------------------------- ARG .EQ $A5 -> $A9 (5 bytes) ARG.SIGN .EQ $AA *-------------------------------------- ARG32.Sign .EQ ARG ARG32 .EQ ARG+1 *-------------------------------------- * CHARGET .EQ $B1 * CHARGOT .EQ $B7 TXTPTR .EQ $B8 *-------------------------------------- * Memory Map *-------------------------------------- A2osX.SaveSM .EQ $100 Aux A2osX.SaveSX .EQ $101 Aux A2osX.NumStrLen .EQ $102 Aux A2osX.NumStrBuf .EQ $103 Aux *-------------------------------------- * Main $200 -> 2FF : (Used By ProDOS,Clock DRV....) * Main $300 -> 3EF : * Main $3F0 -> 3FF : SYS Vectors (reset,IRQ...) * Aux $200 -> 3FD : /RAM Driver * Aux $3FE -> 3FF : IRQ Vector *-------------------------------------- K.S.STAT .EQ $0300 S.STAT for internal kernel operations Evt.Table .EQ $0340 K.EVT.MAX*S.EVT=4*8=32b K.S.IOCTL .EQ $0360 9 bytes K.MLI.PATH .EQ $0369 64+1 K.MLI.PARAMS .EQ $03AA Main, 18 bytes min for GetFileInfo (ATLK needs MORE!!!...32 max for now) *-------------------------------------- K.STACKTOP .EQ $03ED XFer !!! down to $3E0 *-------------------------------------- *** $3F0-$3FF IRQ Handler.... *** *-------------------------------------- SYS.BASL0 .EQ $400 *-------------------------------------- * Main/Aux $400 -> $7FF : TXT PAGE1 Screens *-------------------------------------- * MemMgr : $0800->$0FFF MAIN/AUX (2 kBytes) *-------------------------------------- Mem.LoMem .EQ $0800 Mem.Free .EQ $0802 Mem.HiMem .EQ $0804 Mem.LastSlot .EQ $0806 *-------------------------------------- * free $1000->$1FFF = $1000 (4096) Aux *-------------------------------------- *** Z80 Reserved $1000-10FF*** *-------------------------------------- Z80CODE .EQ $1000 (00000h) Up To $10FF Z80STACK .EQ $10FF (000FFh) Down to $1000 *-------------------------------------- K.Buf256 .EQ $1100 *-------------------------------------- K.IOBuf .EQ $1200 *-------------------------------------- Mem.MHiMem .EQ A2osX.SYSCALL Mem.XHiMem .EQ A2osX.SYSCALL DevMgr.HiMem .EQ $FFFA Protect IRQ vectors in Aux LC *-------------------------------------- H.BIN.T .EQ 0 H.BIN.T.DRV65 .EQ $4CD8 6502:cld,jmp abs H.BIN.T.LIB65 .EQ $7CD8 6502:cld,jmp (abs,x) H.BIN.T.BIN65 .EQ $7CD8 6502:cld,jmp (abs,x) *H.BIN.T.LIB80 .EQ $A28D Z80: *H.BIN.T.BIN80 .EQ $A28D Z80: H.BIN.JMP .EQ 2 H.BIN.CPU .EQ 4 H.BIN.CPU.6502 .EQ $60 H.BIN.CPU.65C02 .EQ $61 H.BIN.CPU.65R02 .EQ $62 H.BIN.CPU.65816 .EQ $63 H.BIN.V .EQ 5 H.BIN.F .EQ 6 H.BIN.CS.SIZE .EQ 8 H.BIN.DS.SIZE .EQ 10 H.BIN.SS.SIZE .EQ 12 H.BIN.ZP.SIZE .EQ 13 * H.BIN.EXE.REL.TABLE .EQ 16 * H.BIN.DRV.REL.TABLE .EQ 2 Including main jmp *-------------------------------------- TTY.BUF.SIZE .EQ 80*24 *-------------------------------------- S.DCB.TTY.DEVID .EQ 0 S.DCB.TTY.STATUS .EQ 1 S.DCB.TTY.MODE .EQ 2 S.DCB.TTY.MODE.ESC .EQ 2 S.DCB.TTY.MODE.CSI .EQ 4 S.DCB.TTY.MODE.IAC .EQ 6 S.DCB.TTY.MODE.G0 .EQ 8 S.DCB.TTY.MODE.G1 .EQ 10 S.DCB.TTY.CH .EQ 3 S.DCB.TTY.CV .EQ 4 S.DCB.TTY.SCROLLTOP .EQ 5 S.DCB.TTY.SCROLLBOT .EQ 6 S.DCB.TTY.bCURON .EQ 7 S.DCB.TTY.bTITLE .EQ 8 S.DCB.TTY.bNORMAL .EQ 9 S.DCB.TTY.bLINEWRAP .EQ 10 S.DCB.TTY.bCRLF .EQ 11 * .EQ 12 S.DCB.TTY.bG0G1 .EQ 13 S.DCB.TTY.bG0ALT .EQ 14 S.DCB.TTY.bG1ALT .EQ 15 S.DCB.TTY.OUTTAIL .EQ 16 S.DCB.TTY.OUTHEAD .EQ 17 S.DCB.TTY.INBUFFER .EQ 18 S.DCB.TTY.INBUFFER.MAX .EQ 31 S.DCB.TTY.OUTBUFFER .EQ 32 S.DCB.TTY.OUTBUFFER.MAX .EQ 64 * S.DCB.TTY .EQ 64 *-------------------------------------- MAN SAVE USR/SRC/SYS/KERNEL.S.DEF LOAD USR/SRC/SYS/KERNEL.S ASM