A2osX/INC/A2osX.I.txt

505 lines
14 KiB
Plaintext
Raw Normal View History

2015-03-14 21:48:35 +00:00
PR#3
2015-06-03 18:30:57 +00:00
PREFIX /A2OSX.SRC
2015-03-14 21:48:35 +00:00
NEW
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
2016-03-13 21:50:43 +00:00
* KERNEL CONSTANTS DEFINITON
*--------------------------------------
K.ENV.SIZE .EQ $100
K.EVT.MAX .EQ 16
K.DEV.MAX .EQ 32
K.PS.MAX .EQ 64
*--------------------------------------
2015-06-03 18:30:57 +00:00
* Aux ZP
2015-03-14 21:48:35 +00:00
*--------------------------------------
2016-03-13 21:50:43 +00:00
ZPKERNEL .EQ $0
*--------------------------------------
2016-08-17 06:25:58 +00:00
ZPMEMMGR .EQ $8
*--------------------------------------
2015-06-03 18:30:57 +00:00
pCode .EQ $10
pData .EQ $12
pStack .EQ $14
2015-03-14 21:48:35 +00:00
2015-06-03 18:30:57 +00:00
pLib .EQ $16
2016-08-17 06:25:58 +00:00
pDrv .EQ $18
2015-03-14 21:48:35 +00:00
2016-08-17 06:25:58 +00:00
pPs .EQ $1A
pDev .EQ $1C
pEvent .EQ $1E
2015-03-14 21:48:35 +00:00
2015-06-03 18:30:57 +00:00
ZPDRV .EQ $80
ZPBIN .EQ $90
2016-01-16 22:06:36 +00:00
ZPLIB .EQ $A0 32 bytes for TCPIP
2015-03-14 21:48:35 +00:00
*--------------------------------------
* !!!!!!! RESERVED APPLESOFT.I !!!!!!!
* $5E -> $C8
*--------------------------------------
R.VCPU16 .EQ $F0
R.AX .EQ R.VCPU16
R.AL .EQ R.VCPU16
R.AH .EQ R.VCPU16+$1
R.BX .EQ R.VCPU16+$2
R.BL .EQ R.VCPU16+$2
R.BH .EQ R.VCPU16+$3
R.CX .EQ R.VCPU16+$4
R.CL .EQ R.VCPU16+$4
R.CH .EQ R.VCPU16+$5
R.DX .EQ R.VCPU16+$6
R.DL .EQ R.VCPU16+$6
R.DH .EQ R.VCPU16+$7
*--------------------------------------
* Memory Map
2015-03-14 21:48:35 +00:00
*--------------------------------------
2015-06-03 18:30:57 +00:00
A2osX.SaveSM .EQ $100 Aux
2015-03-14 21:48:35 +00:00
A2osX.SaveSX .EQ $101 Aux
*--------------------------------------
2015-06-03 18:30:57 +00:00
* 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
2015-03-14 21:48:35 +00:00
*--------------------------------------
2015-06-03 18:30:57 +00:00
TmpBuffer256 .EQ $0200 Main
2015-03-14 21:48:35 +00:00
*--------------------------------------
2015-06-03 18:30:57 +00:00
D.STACK.BASE .EQ $0300 $03EF...
D.STACK.TOP .EQ $03F0 ...Down to $0300
2015-03-14 21:48:35 +00:00
*--------------------------------------
*** IRQ Handler ***
*--------------------------------------
* Main/Aux $400 -> $7FF : Console Screen
* Main/Aux $800 -> $BFF : System Screen
*--------------------------------------
2016-08-17 06:25:58 +00:00
KrnBuffer256 .EQ $0C00
*--------------------------------------
*** Z80 Reserved ***
*--------------------------------------
Z80STACK .EQ $0FFF (0FFFFh) Down to $0F00
Z80JMP .EQ $1000
*--------------------------------------
2016-03-13 21:50:43 +00:00
EvtMgr.Table .EQ $1100 K.EVT.MAX*S.EVT.SIZE=32*8=256b
*--------------------------------------
DevMgr.Table .EQ $1200 K.DEV.MAX*S.DEV.SIZE=32*16=512b
*--------------------------------------
TskMgr.Table .EQ $1400 K.PS.MAX*S.PS.SIZE=64*16=1k
*--------------------------------------
2016-08-17 06:25:58 +00:00
* MemMgr : $1800->$1FFF MAIN/AUX (2 kBytes)
*--------------------------------------
MemMgr.Table .EQ $1800
MemMgr.HiMem .EQ $1800 Slot 0 is Reserved
MemMgr.Free .EQ $1802
MemMgr.LoMem .EQ $1804
MemMgr.LastSlot .EQ $1806
*--------------------------------------
MemMgr.MLoMem .EQ $2000
MemMgr.MHiMem .EQ $BE00
MemMgr.XLoMem .EQ $2000
MemMgr.XHiMem .EQ $C000
*--------------------------------------
2015-03-14 21:48:35 +00:00
* A2osX GLOBAL PAGE
2015-06-03 18:30:57 +00:00
* $BE00->$BE0F : Public Vetors
2015-03-14 21:48:35 +00:00
*--------------------------------------
A2osX.SYSCALL .EQ $BE00
A2osX.LIBCALL .EQ $BE03
2015-06-03 18:30:57 +00:00
A2osX.MLICALL .EQ $BE06
A2osX.ROMCALL .EQ $BE09
*--------------------------------------
2016-08-17 06:25:58 +00:00
pCodeJmp .EQ $BE10
pLibJmp .EQ $BE13
pDrvJmp .EQ $BE16
pDevJmp .EQ $BE19
2015-03-14 21:48:35 +00:00
*--------------------------------------
2016-05-01 21:12:22 +00:00
* $12 bytes min !!!!
*--------------------------------------
MLICALL.PARAMS .EQ $BEC0
*--------------------------------------
2016-06-07 06:10:18 +00:00
* $BEE0->$BEEF : Public Variables
2015-06-03 18:30:57 +00:00
*--------------------------------------
2016-06-07 06:10:18 +00:00
A2osX.ASCREEN .EQ $BEE0 Active Screen
A2osX.SCRNDEVS .EQ $BEE1 -> $BEE4 (4 devices)
2015-03-14 21:48:35 +00:00
2016-03-13 21:50:43 +00:00
A2osX.CPUTYPE .EQ $BEE6
A2osX.CPUSPEED .EQ $BEE7 (->255.99 Mhz)
2015-03-14 21:48:35 +00:00
2015-06-03 18:30:57 +00:00
A2osX.Z80SLOT .EQ $BEEA
2016-03-13 21:50:43 +00:00
A2osX.TIMER16 .EQ $BEEC
A2osX.RANDOM16 .EQ $BEEE
2015-03-14 21:48:35 +00:00
*--------------------------------------
2016-06-07 06:10:18 +00:00
* $BEF0->$BEFF : Kernel Config Block
*--------------------------------------
A2osX.HZ .EQ $BEF0
*--------------------------------------
H.BIN.HEADER .EQ 0
2016-03-13 21:50:43 +00:00
H.BIN.HEADER.DRV65 .EQ $4CD8 6502:cld,jmp abs
H.BIN.HEADER.LIB65 .EQ $7CD8 6502:cld,jmp (abs,x)
H.BIN.HEADER.BIN65 .EQ $7CD8 6502:cld,jmp (abs,x)
H.BIN.HEADER.LIB80 .EQ $A28D Z80:
H.BIN.HEADER.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.BIN.DS.SIZE .EQ 10
H.BIN.DEV.HEADER.O .EQ 10
H.BIN.DRV.CODE.O .EQ 12
H.BIN.DRV.CODE.LEN .EQ 14
H.BIN.RELOC.TABLE .EQ 16
*--------------------------------------
* A2osX.SYSCALL Functions Indexes
*--------------------------------------
SYS.GetMem .EQ $00
SYS.FreeMemA .EQ $02
SYS.GetMemPtrA .EQ $04
SYS.GetMemByIDA .EQ $06
2016-06-07 06:10:18 +00:00
SYS.GetMemByNameYA .EQ $08
SYS.LoadStockObjectYA .EQ $0A
SYS.GetStockObjectA .EQ $0C
SYS.FreeStockObject .EQ $0E
*--------------------------------------
SYS.NewPStrYA .EQ $10
2016-08-17 06:25:58 +00:00
SYS.PStrCpy .EQ $12
2016-06-23 20:18:29 +00:00
SYS.PStrCat .EQ $14
2016-08-17 06:25:58 +00:00
SYS.PStrUprYA .EQ $16
2016-05-01 21:12:22 +00:00
2016-08-17 06:25:58 +00:00
SYS.PStr2StrArrayYA .EQ $1A
*--------------------------------------
2016-08-17 06:25:58 +00:00
SYS.LoadDrvYA .EQ $20
SYS.LoadLibYA .EQ $22
SYS.UnloadLibA .EQ $24
*--------------------------------------
2016-08-17 06:25:58 +00:00
SYS.ExpandPStrYA .EQ $32
2016-08-17 06:25:58 +00:00
SYS.GetArgC .EQ $34
SYS.GetArgA .EQ $36
2016-08-17 06:25:58 +00:00
SYS.PutEnvYA .EQ $38
SYS.SetEnv .EQ $3A
SYS.GetEnvYA .EQ $3C
SYS.UnsetEnvYA .EQ $3E
*--------------------------------------
SYS.MLICreateFile .EQ $40
2016-06-07 06:10:18 +00:00
SYS.MLICreateDirYA .EQ $44
SYS.MLIDestroyYA .EQ $48
SYS.MLIRename .EQ $4A
SYS.MLISetFileInfo .EQ $4C
2016-06-07 06:10:18 +00:00
SYS.MLIGetFileInfoYA .EQ $50
SYS.MLIOnline .EQ $52
2016-06-07 06:10:18 +00:00
SYS.MLISetPrefixYA .EQ $56
SYS.MLIGetPrefixYA .EQ $5A
2016-06-07 06:10:18 +00:00
SYS.MLIOpenYA .EQ $5E
SYS.MLINewLine .EQ $60
SYS.MLIRead .EQ $62
SYS.MLIWrite .EQ $64
SYS.MLICloseA .EQ $66
SYS.MLIFlushA .EQ $68
SYS.MLISetMark .EQ $6A
SYS.MLIGetMarkA .EQ $6A
SYS.MLISetEOF .EQ $6C
SYS.MLIGetEOFA .EQ $70
SYS.MLISetBuf .EQ $72
SYS.MLIGetBuf .EQ $74
SYS.MLIGetTime .EQ $76
SYS.MLIAllocIRQ .EQ $78
SYS.MLIDeallocIRQ .EQ $7A
SYS.MLIReadBlock .EQ $7C
SYS.MLIWriteBlock .EQ $7E
*--------------------------------------
SYS.GetDevByIDA .EQ $80
2016-06-07 06:10:18 +00:00
SYS.GetDevByNameYA .EQ $84
2016-02-24 20:02:16 +00:00
SYS.GetDevInfoA .EQ $86
SYS.GetKeyboardEvent .EQ $88
*--------------------------------------
SYS.ExecProcessNewEnvYA .EQ $90
SYS.ExecProcessYA .EQ $92
SYS.CreateProcessNewEnvYA .EQ $94
SYS.CreateProcessYA .EQ $96
SYS.GetPSByIDA .EQ $98
SYS.Sleep .EQ $9C
*--------------------------------------
2016-06-24 06:02:32 +00:00
SYS.CheckPrefixYA .EQ $A0
SYS.FileSearch .EQ $A2
2016-08-17 06:25:58 +00:00
SYS.GetFullPathYA .EQ $A4
SYS.LoadFileYA .EQ $A6
2016-05-01 21:12:22 +00:00
SYS.ListDirInitYA .EQ $AA
SYS.ListDirNextA .EQ $AC
SYS.ListDirCloseA .EQ $AE
*--------------------------------------
SYS.AddNetCfg .EQ $B0
SYS.SetNetCfg .EQ $B2
SYS.GetNetCfgA .EQ $B4
SYS.ClrNetCfgA .EQ $B6
*--------------------------------------
2016-06-07 06:10:18 +00:00
*SYS.ScreenSelectA .EQ $C0
*--------------------------------------
SYS.COutA .EQ $D0
2016-06-07 06:10:18 +00:00
SYS.PSTROutYA .EQ $D4
SYS.HexOutA .EQ $D8
SYS.HexOutYA .EQ $DA
SYS.DecOutA .EQ $DC
SYS.DecOutYA .EQ $DE
2016-06-07 06:10:18 +00:00
*SYS.FGETC .EQ $F0
*SYS.FGETS .EQ $F2
*SYS.FPUTC .EQ $F4
*SYS.FPUTS .EQ $F6
*--------------------------------------
SYS.FOPEN .EQ $E0
SYS.FCLOSE .EQ $E2
SYS.FREAD .EQ $E4
SYS.FWRITE .EQ $E6
SYS.FFLUSH .EQ $E8
SYS.FSEEK .EQ $EA
SYS.FTELL .EQ $EC
SYS.FEOF .EQ $EE
SYS.REMOVE .EQ $F0
SYS.RENAME .EQ $F2
SYS.OPENDIR .EQ $F4
SYS.READDIR .EQ $F6
SYS.CLOSEDIR .EQ $F8
SYS.MKDIR .EQ $FA
SYS.MKNOD .EQ $FC
SYS.MKFIFO .EQ $FE
*--------------------------------------
2016-05-01 21:12:22 +00:00
S.FINFO.ACCESS .EQ $00
S.FINFO.TYPE .EQ $01
S.FINFO.AUXTYPE .EQ $02
S.FINFO.STORETYPE .EQ $04
S.FINFO.BLOCKSUSED .EQ $05
S.FINFO.MODDATE .EQ $07
S.FINFO.MODTIME .EQ $09
S.FINFO.CREATEDATE .EQ $0B
S.FINFO.CREATETIME .EQ $0D
S.FINFO .EQ $0F
*--------------------------------------
2016-01-16 22:06:36 +00:00
* ProDOS ERROR CODES : $00->$5F
* Lib ERROR CODES : $80->$BF
* Kernel ERROR CODES : $C0->$FF
*--------------------------------------
*$00 - No Error
*$01 - Bad Call Number
*$04 - Bad Parameter Count
*$25 - Interrupt Table Full
*$27 - I/O Error
*$28 - No Device Connected
*$2B - Write Protected
*$2E - Disk Switched
*$40 - Invalid Pathname
*$42 - Maximum Number of Files Open
*$43 - Invalid Reference Number
*$44 - Directory Not Found
*$45 - Volume Not Found
*$46 - File Not Found
*$47 - Duplicate File Name
*$48 - Volume Full
*$49 - Directory Full
*$4A - Incompatible File Format
*$4B - Unsupported Storage Type
*$4C - End of File, No More Data
*$4D - Beyond EOF
*$4E - File Access Error, File Locked
*$50 - File Already Open
*$51 - Directory Structure Damaged
*$53 - Invalid Parameter
*$55 - Too Many Volumes
*$56 - Bad Buffer Address
*$57 - Duplicate Volume
*$5A - File Structure Damaged
*--------------------------------------
MEMMGR.ERROOM .EQ $FF Out Of Memory Error
MEMMGR.ERROOH .EQ $FE Out Of Handle Error
*--------------------------------------
DEVMGR.ERROOM .EQ $EF Out Of Memory Error
DEVMGR.ERROOH .EQ $EE Out Of Handle Error
2016-01-04 07:17:33 +00:00
DEVMGR.ERRICL .EQ $ED Invalid Command Line
DEVMGR.ERRNOHW .EQ $EC No Hardware
DEVMGR.ERRDNF .EQ $EB Device Not Found Error
2016-06-07 06:10:18 +00:00
DEVMGR.ERRUNSUP .EQ $EA Unsupported Function
*--------------------------------------
TSKMGR.ERROOH .EQ $DF Out Of Handle Error
TSKMGR.ERRNSP .EQ $DD No Such Process Error
*--------------------------------------
SYSMGR.ERRSYN .EQ $CF Syntax Error
SYSMGR.ERRENVF .EQ $CE Env is Full
SYSMGR.ERRIDIR .EQ $CD Invalid Directory
SYSMGR.ERRFTB .EQ $CC File Too Big Error
SYSMGR.ERRFNF .EQ $CB File Not Found Error
*--------------------------------------
* MEM STRUCT
*--------------------------------------
S.MEM.F .EQ 0
S.MEM.F.AUX .EQ %10000000 Request Stock Object
S.MEM.F.INIT0 .EQ %01000000 Fill with "0"
S.MEM.F.CODE .EQ %00100000
S.MEM.F.NOMOVE .EQ %00010000
S.MEM.F.ALIGN .EQ %00001000
S.MEM.F.INUSE .EQ %10000000 (Internal Flag)
S.MEM.REFCNT .EQ 1
S.MEM.OWNERPID .EQ 2
S.MEM.BIN .EQ 3
S.MEM.PTR .EQ 4
S.MEM.LEN .EQ 6
*
S.MEM.SIZE .EQ 8
*--------------------------------------
* DEV STRUCT
*--------------------------------------
2016-06-07 06:10:18 +00:00
S.DEV.CODE .EQ 0 cld,jmp...
S.DEV.JMP .EQ 2 ...(code,x)
S.DEV.ID .EQ 4
S.DEV.F .EQ 5
S.DEV.F.INUSE .EQ %10000000
S.DEV.F.BUSY .EQ %01000000
S.DEV.F.SHARE .EQ %00100000 Device is shareable
S.DEV.F.IRQ .EQ %00010000 Device is irq driven
S.DEV.F.EVENT .EQ %00001000 Device is event driven
S.DEV.F.COUT .EQ %00000100 Device supports Char OUT
S.DEV.F.BLOCK .EQ %00000010
S.DEV.F.CHAR .EQ %00000001
2016-06-07 06:10:18 +00:00
S.DEV.NAME .EQ 6 5 Bytes : LEN+NUL KBD CON COMx LPTx ETHx
*
S.DEV.SIZE .EQ 16
*--------------------------------------
S.DEVINFO.TYPE .EQ 0
S.DEVINFO.TYPE.CHAR .EQ %00000001
S.DEVINFO.TYPE.XY .EQ %00000010
S.DEVINFO.TYPE.NET .EQ %00000011
S.DEVINFO.TYPE.GFX .EQ %00000100
2016-01-10 22:16:56 +00:00
S.DEVINFO.FLAGS .EQ 1
2016-04-18 20:18:08 +00:00
S.DEVINFO.NET.FLAGS.ARPOFFLOAD .EQ %00000001
S.DEVINFO.NET.FLAGS.IPOFFLOAD .EQ %00000010
2016-02-24 20:02:16 +00:00
S.DEVINFO.NET.MAC .EQ 2
S.DEVINFO.NET.STATUS .EQ 8
S.DEVINFO.NET.STATUS.OK .EQ $80
S.DEVINFO.NET.STATUS.FD .EQ $40
2016-03-13 21:50:43 +00:00
S.DEVINFO.NET.STATUS.10 .EQ $01
2016-02-24 20:02:16 +00:00
S.DEVINFO.NET.STATUS.100 .EQ $02
S.DEVINFO.NET.STATUS.1000 .EQ $03
*--------------------------------------
* Generic Driver Functions
*--------------------------------------
DEVMGR.OPEN .EQ 0
DEVMGR.GETEVENT .EQ 2
DEVMGR.COUT .EQ 4
DEVMGR.CLOSE .EQ 6
DEVMGR.GETINFO .EQ 8
DEVMGR.IRQ .EQ 10
*--------------------------------------
2016-06-07 06:10:18 +00:00
DEVMGR.SELECT .EQ 12
*--------------------------------------
* 'NET' Class Driver Functions
*--------------------------------------
DEVMGR.NET.SEND .EQ 12
2016-01-10 22:16:56 +00:00
DEVMGR.SETIPCFG .EQ 14
*--------------------------------------
* 'GFX' Class Driver Functions
*--------------------------------------
2016-06-07 06:10:18 +00:00
DEVMGR.GFX.SETPIXEL .EQ 14
DEVMGR.GFX.GETPIXEL .EQ 16
DEVMGR.GFX.HLINE .EQ 18
DEVMGR.GFX.VLINE .EQ 20
DEVMGR.GFX.BITBLT .EQ 22
*--------------------------------------
* PS STRUCT
*--------------------------------------
S.PS.F .EQ 0
S.PS.F.INUSE .EQ %10000000
S.PS.F.HOLD .EQ %01000000
S.PS.F.EVENT .EQ %00100000
S.PS.F.ENV .EQ %00010000
S.PS.F.SLEEP .EQ %00001000
S.PS.F.INIT .EQ %00000100
S.PS.ID .EQ 1
S.PS.PID .EQ 2
S.PS.hCS .EQ 3
S.PS.hDS .EQ 4
S.PS.hPREFIX .EQ 5
S.PS.hENV .EQ 6
2016-08-17 06:25:58 +00:00
S.PS.hCMDLINE .EQ 7
*S.PS.hARGS .EQ 8
S.PS.hINDEV .EQ 9
S.PS.hOUTDEV .EQ 10
S.PS.hERRDEV .EQ 11
S.PS.CID .EQ 12
S.PS.LASTERROR .EQ 13
S.PS.PC .EQ 14
*
S.PS.SIZE .EQ 16
2015-03-14 21:48:35 +00:00
*--------------------------------------
* LIB Function Indexes
*--------------------------------------
LIBMGR.LOAD .EQ 0
LIBMGR.UNLOAD .EQ 2
*--------------------------------------
* Task Function Indexes
*--------------------------------------
TSKMGR.INIT .EQ 0
TSKMGR.RUN .EQ 2
TSKMGR.DOEVENT .EQ 4
TSKMGR.QUIT .EQ 6
*--------------------------------------
* EVENT STRUCT
*--------------------------------------
S.EVT.F .EQ 0
2016-03-13 21:50:43 +00:00
S.EVT.F.T10TH .EQ %10000000
S.EVT.F.T1SEC .EQ %01000000
S.EVT.F.hMEM2 .EQ %00100000 Indicates That S.EVT.DATAHI is a hMem
S.EVT.F.hMEM1 .EQ %00010000 Indicates That S.EVT.DATALO is a hMem
2016-03-13 21:50:43 +00:00
S.EVT.F.NET .EQ %00000100
S.EVT.F.MOUSE .EQ %00000010
S.EVT.F.KEY .EQ %00000001
S.EVT.hDEV .EQ 1
S.EVT.DATA .EQ 2
S.EVT.DATALO .EQ 2
S.EVT.DATAHI .EQ 3
S.EVT.DATAW1 .EQ 4
S.EVT.DATAW2 .EQ 6
*
2016-03-13 21:50:43 +00:00
S.EVT .EQ 8
*--------------------------------------
* S.LISTDIR STRUCT
*--------------------------------------
S.LISTDIR.hONLINE .EQ 0
S.LISTDIR.ONLINEPTR .EQ 1
S.LISTDIR.REFNUM .EQ 2 ref_num file
S.LISTDIR.hIOBUF .EQ 3 hMem to ProDOS IO buffer
S.LISTDIR.hREADBUF .EQ 4 hMem to 512 Read Buffer
S.LISTDIR.EL .EQ 5 entry_length
S.LISTDIR.EIB .EQ 6 ENTRY_INDEX in block
S.LISTDIR.EPB .EQ 7 entry_per_block
S.LISTDIR.BLKPTR .EQ 8 entry PTR in block
S.LISTDIR.FI .EQ 10 FILE_INDEX in DIR
S.LISTDIR.FC .EQ 12 file_count
2016-05-01 21:12:22 +00:00
S.LISTDIR.hPATH .EQ 14 Base path for file filtering
S.LISTDIR.hPATTERN .EQ 15 Pattern for file filtering
*
S.LISTDIR.SIZE .EQ 16
*--------------------------------------
2015-03-14 21:48:35 +00:00
MAN
SAVE INC/A2OSX.I