A2osX/INC/KERNEL.I.txt

134 lines
4.0 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.

PR#3
PREFIX /A2OSX.BUILD
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
* KERNEL CONSTANTS DEFINITON
*--------------------------------------
K.ENV.SIZE .EQ 256
K.FLT.MAX .EQ 4
K.EVT.MAX .EQ 8
K.DEV.MAX .EQ 32
K.PS.MAX .EQ 32
*--------------------------------------
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.CODE.TYPE .EQ 4
*H.BIN.VERSION .EQ 5
H.BIN.CODE.LEN .EQ 8
*
H.BIN.EXE.DS.SIZE .EQ 10
H.BIN.EXE.SS.SIZE .EQ 12
H.BIN.EXE.ZP.SIZE .EQ 13
H.BIN.EXE.REL.TABLE .EQ 16
*
H.BIN.DRV.HEADER.O .EQ 10
H.BIN.DRV.CODE.O .EQ 12
H.BIN.DRV.CODE.LEN .EQ 14
H.BIN.DRV.REL.TABLE .EQ 0
*--------------------------------------
ZPKERNEL .EQ $0
ZPMEMMGR .EQ $8
*--------------------------------------
* $42-$47 ProDOS Block Device Drivers Main
*--------------------------------------
* $5E-$C8 RESERVED APPLESOFT Main/Aux (ROM Call, no need to switch back MainZP)
*--------------------------------------
INDEX .EQ $5E ->$5F
FORPNT .EQ $85 ->$86
*FAC .EQ $9D ->$A1
*FAC.SIGN .EQ $A2
*FAC.EXTENSION .EQ $AC
TXTPTR .EQ $B8
*--------------------------------------
* ROM Entry Point
*--------------------------------------
ROM.FSUB .EQ 0
ROM.FADD .EQ 2
ROM.LTOF .EQ 4
ROM.LOG .EQ 6
ROM.FMULT .EQ 8
ROM.SETARG.AY .EQ 10
ROM.FDIV .EQ 12
ROM.SETFAC.AY .EQ 14
ROM.GETFAC .EQ 16 Get FAC at FORPNT
ROM.FCOMP .EQ 18
ROM.QINT .EQ 20
ROM.FIN .EQ 22
ROM.FOUT .EQ 24
ROM.SQR .EQ 26
ROM.PWR .EQ 28
ROM.EXP .EQ 30
ROM.COS .EQ 32
ROM.SIN .EQ 34
ROM.TAN .EQ 36
ROM.ATAN .EQ 38
*--------------------------------------
* Memory Map
*--------------------------------------
A2osX.SaveSM .EQ $100 Aux
A2osX.SaveSX .EQ $101 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
K.S.DSTAT .EQ $0340 S.DSTAT=25 or higher depends on dev type
K.SP.PARAMS .EQ $0380 Max 9 bytes
K.MLI.PARAMS .EQ $0390 Main, 18 bytes min for GetFileInfo (ATLK needs MORE!!!...32 max for now)
K.MLI.PATH .EQ $03B0 64+1 -> $03F0
*--------------------------------------
*** $3F0-$3FF IRQ Handler.... ***
*--------------------------------------
* Main/Aux $400 -> $7FF : Console Screen
* Main/Aux $800 -> $BFF : System Screen
*--------------------------------------
PS.Table.PID .EQ $0C00 K.PS.MAX
PS.Table.hMem .EQ $0C00+K.PS.MAX
K.Buf256 .EQ $0E00 Main
*--------------------------------------
K.STACKTOP .EQ $0F20 down to $0f00
*--------------------------------------
*** Z80 Reserved $0F00-10FF***
*--------------------------------------
Z80STACK .EQ $0FFF (0FFFFh) Down to $0F20
Z80JMP .EQ $1000 (00000h) Up To $10FF
*--------------------------------------
Flt.Table .EQ $1100 K.FLT.MAX*S.FLT.SIZE=8*32=128b
*--------------------------------------
Evt.Table .EQ $1180 K.EVT.MAX*S.EVT.SIZE=16*8=128b
*--------------------------------------
Dev.Table .EQ $1200 K.DEV.MAX*S.DEV.SIZE=32*16=512b
*--------------------------------------
* MemMgr : $1800->$1FFF MAIN/AUX (2 kBytes)
*--------------------------------------
Mem.Table .EQ $1800 Slot 0 is Reserved
Mem.LoMem .EQ $1800
Mem.Free .EQ $1802
Mem.HiMem .EQ $1804
Mem.LastSlot .EQ $1806
*--------------------------------------
Mem.MLoMem .EQ $2000
Mem.MHiMem .EQ $BD00
Mem.XLoMem .EQ $2000
Mem.XHiMem .EQ $C000
*--------------------------------------
DevMgr.HiMem .EQ $FFFA Protect IRQ vectors in Aux LC
*--------------------------------------
MAN
SAVE /A2OSX.BUILD/INC/KERNEL.I
LOAD /A2OSX.SRC/SYS/KERNEL.S
ASM