A2osX/SYS/KERNEL.S.DEF.txt
2020-05-28 23:13:52 +02:00

205 lines
5.7 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

NEW
AUTO 3,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
*--------------------------------------
* X.UNPAK temp ZP (with ZPPtr1 &ZPPtr2)
*--------------------------------------
.DUMMY
.OR ZPTMP
ZPInBufPtr .BS 2
ZPOutBufPtr .BS 2
ZPnCnt .BS 2
ZPInMask .BS 1
ZPBLOfsLBits .BS 1
ZPBLOfsHBits .BS 1
ZPBLLenBits .BS 1
.ED
*--------------------------------------
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 : <free>
* 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
* GetFileInfoEx/SetFileInfoEx need 1 + 2 + 48 = 51
*--------------------------------------
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.XLoMem .EQ $1000
Mem.XHiMem .EQ $A000
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.CH.SAVE .EQ 4
S.DCB.TTY.CV .EQ 5
S.DCB.TTY.CV.SAVE .EQ 6
S.DCB.TTY.SCROLLTOP .EQ 7
S.DCB.TTY.SCROLLBOT .EQ 8
S.DCB.TTY.bCURON .EQ 9
S.DCB.TTY.bTITLE .EQ 10
S.DCB.TTY.bNORMAL .EQ 11
S.DCB.TTY.bLINEWRAP .EQ 12
S.DCB.TTY.bCRLF .EQ 13
S.DCB.TTY.bG0G1 .EQ 14
S.DCB.TTY.bG0G1ALT .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
*--------------------------------------
S.MD5.ABCD0 .EQ 0
S.MD5.A0 .EQ 0
S.MD5.B0 .EQ 4
S.MD5.C0 .EQ 8
S.MD5.D0 .EQ 12
S.MD5.BITCOUNT .EQ 16
S.MD5.EXTRABIT .EQ 24
S.MD5.FINALIZED .EQ 25
*
S.MD5 .EQ 26
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.DEF
LOAD USR/SRC/SYS/KERNEL.S
ASM