A2osX/INC/A2osX.I.txt

545 lines
14 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 $900
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
pDrv .EQ $10
pDev .EQ $12
pEvent .EQ $14
pPs .EQ $16
*--------------------------------------
* PS Context : 24 bytes
*--------------------------------------
pCode .EQ $18
pData .EQ $1A
pStack .EQ $1C
pLocal .EQ $1E
ZPBIN .EQ $20
*--------------------------------------
ZPDRV .EQ $30
ZPLIB .EQ $40 32 bytes for TCPIP
*--------------------------------------
* A2osX GLOBAL PAGE
* $BD00->$BD0F : Public Vetors
*--------------------------------------
A2osX.SYSCALL .EQ $BD00
A2osX.LIBCALL .EQ $BD03
A2osX.MLICALL .EQ $BD06
A2osX.ROMCALL .EQ $BD09
A2osX.BADCALL .EQ $BD0C
*--------------------------------------
pCodeJmp .EQ $BD10
*pLibJmp .EQ $BD13
pDrvJmp .EQ $BD16
pDevJmp .EQ $BD19
*--------------------------------------
* $BEE0->$BEEF : Public Variables
*--------------------------------------
A2osX.ASCREEN .EQ $BEE0 Active Screen
A2osX.SCRNDEVS .EQ $BEE1 -> $BEE4 (4 screen devices)
A2osX.CPUTYPE .EQ $BEE5
A2osX.CPUSPEED .EQ $BEE6 WORD, (->255.99 Mhz)
A2osX.Z80SLOT .EQ $BEE8
A2osX.Z80SPEED .EQ $BEE9 WORD
A2osX.TIMER16 .EQ $BEEC WORD
A2osX.RANDOM16 .EQ $BEEE WORD
*--------------------------------------
* $BEF0->$BEFF : Kernel Config Block
*--------------------------------------
A2osX.HZ .EQ $BEF0 5/6 for 50/60Hz
A2osX.CHROOT .EQ $BEF8 ChRooting to /RAMx
A2osX.SLOTS .EQ $BEF8 $BEF9->$BEFF, 7 slots
A2osX.SLOTS.Z80 .EQ $80
A2osX.SLOTS.VSDRIVE .EQ $81
A2osX.SLOTS.ATCARD .EQ $82
A2osX.SLOTS.DII .EQ $C0
A2osX.SLOTS.BLK .EQ $C1
A2osX.SLOTS.SP .EQ $C2
A2osX.SLOTS.COM .EQ $E0
A2osX.SLOTS.XY .EQ $E1
A2osX.SLOTS.NET .EQ $E2
A2osX.SLOTS.DISABLE .EQ $FF
*--------------------------------------
H.BIN.HEADER .EQ 0
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.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
*--------------------------------------
* A2osX.SYSCALL Functions Indexes
*--------------------------------------
* .EQ $00
* .EQ $02
SYS.Stat .EQ $04
SYS.MKDir.YA .EQ $06
SYS.MKNod.YA .EQ $08
SYS.MKFIFO .EQ $0A
* .EQ $0C
* .EQ $0E
SYS.OpenDir.YA .EQ $10
SYS.ReadDir.A .EQ $12
SYS.CloseDir.A .EQ $14
* .EQ $16-$1E
SYS.FPutC.AY .EQ $20
SYS.PutChar.A .EQ $22
SYS.GetC.A .EQ $24
SYS.GetChar .EQ $26
SYS.FPutS .EQ $28
SYS.PutS.YA .EQ $2A
SYS.FGetS .EQ $2C
SYS.GetS.YA .EQ $2E
SYS.FOpen .EQ $30
SYS.FOpen.R .EQ $01 Open For Read
SYS.FOpen.W .EQ $02 Open For Write
SYS.FOpen.A .EQ $04 Append
SYS.FOpen.T .EQ $08 Open/Append in Text mode
SYS.FOpen.X .EQ $80 Create if not exists
SYS.FClose.A .EQ $32
SYS.FRead .EQ $34
SYS.FWrite .EQ $36
SYS.FFlush .EQ $38
SYS.FSeek .EQ $3A
SYS.FSeek.SET .EQ $00
SYS.FSeek.CUR .EQ $01
SYS.FSeek.END .EQ $02
SYS.FTell .EQ $3C
SYS.FEOF .EQ $3E
SYS.Remove.YA .EQ $40
SYS.Rename .EQ $42
* .EQ $44
* .EQ $46
SYS.GetDevByID.A .EQ $48
SYS.GetDevByName.YA .EQ $4A
SYS.GetDevStatus.A .EQ $4C
* .EQ $4E
* .EQ $50
SYS.SScanF .EQ $52
* .EQ $54
* .EQ $56
SYS.PrintF.YA .EQ $58
SYS.SPrintF.YA .EQ $5A
SYS.FPrintF.YA .EQ $5C
* .EQ $5E
* .EQ $60
SYS.GetFullPath.YA .EQ $62
SYS.LoadFile .EQ $64
SYS.SaveFile .EQ $66
SYS.ChTyp .EQ $68
SYS.ChMod .EQ $6A
SYS.ChOwn .EQ $6C
SYS.ChGrp .EQ $6E
SYS.AToF .EQ $70
SYS.AToI.YA .EQ $72
SYS.AToL .EQ $74
* .EQ $76
* .EQ $78
* .EQ $7A
* .EQ $7C
* .EQ $7E
*--------------------------------------
SYS.StrLen.YA .EQ $80
SYS.StrCpy .EQ $82
SYS.StrCat .EQ $84
SYS.StrMatch .EQ $86
SYS.StrUpr.YA .EQ $88
SYS.StrLwr.YA .EQ $8A
SYS.StrFTime .EQ $8C
* .EQ $8E
SYS.Time.YA .EQ $90
SYS.CTime2Time .EQ $92
SYS.PTime2Time .EQ $94
* .EQ $96
SYS.LoadLib.YA .EQ $98
SYS.UnloadLib.A .EQ $9A
SYS.LoadDrv.YA .EQ $9C
SYS.FileSearch .EQ $9E
SYS.ExecProcessNewEnvYA .EQ $A0
SYS.ExecProcessYA .EQ $A2
SYS.CreateProcessNewEnvYA .EQ $A4
SYS.CreateProcessYA .EQ $A6
* .EQ $A8
* .EQ $AA
* .EQ $AC
SYS.GetPSList.YA .EQ $AE
*SYS.GetArgC .EQ $B0
SYS.GetArg.A .EQ $B2
SYS.ExpandStr.YA .EQ $B4
* .EQ $B6
SYS.PutEnv.YA .EQ $B8
SYS.SetEnv .EQ $BA
SYS.GetEnv.YA .EQ $BC
SYS.UnsetEnv.YA .EQ $BE
*--------------------------------------
SYS.GetMem .EQ $C0
SYS.FreeMem.A .EQ $C2
SYS.GetMemPtr.A .EQ $C4
SYS.GetMemByID.A .EQ $C6
SYS.GetMem.YA .EQ $C8
SYS.GetMem0.YA .EQ $CA
* .EQ $CC
SYS.NewStr.YA .EQ $CE
SYS.SetLoMem .EQ $D0
SYS.GetMemStat.YA .EQ $D2
* .EQ $D4
* .EQ $D6
SYS.LoadStkObj.YA .EQ $D8
SYS.GetStkObj.A .EQ $DA
SYS.FreeStkObj.A .EQ $DC
* .EQ $DE
SYS.Sleep .EQ $E0
*--------------------------------------
* ProDOS ERROR CODES : $00->$5F
* Lib ERROR CODES : $80->$BF
* Kernel ERROR CODES : $C0->$FF
*--------------------------------------
MEMMGR.ERROOM .EQ $FF Out Of Memory Error
MEMMGR.ERROOH .EQ $FE Out Of Handle Error
*--------------------------------------
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.ERRIBIN .EQ $CD Invalid BIN format
SYSMGR.ERRFTB .EQ $CC File Too Big 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 .EQ 8
*--------------------------------------
S.MEMSTAT.ML .EQ 0
S.MEMSTAT.MF .EQ 2
S.MEMSTAT.MH .EQ 4
S.MEMSTAT.MLastSlot .EQ 6
*
S.MEMSTAT.XL .EQ 8
S.MEMSTAT.XF .EQ 10
S.MEMSTAT.XH .EQ 12
S.MEMSTAT.XLastSlot .EQ 14
*
S.MEMSTAT.DL .EQ 16
S.MEMSTAT.DF .EQ 18
S.MEMSTAT.DH .EQ 20
S.MEMSTAT.DCount .EQ 22
*
S.MEMSTAT .EQ 24
*--------------------------------------
* DEVMGR (new API) = Smartport
*--------------------------------------
* JMP : (A=Device)
* DRV : AUXLC entry point
* BLK : ROM Entry point Cn($Cnff)
* PRT : ROM Entry point Cn($Cnff)+3
*--------------------------------------
S.DEV.DRV.JMP .EQ 2
S.DEV.S .EQ 4
S.DEV.S.BLOCK .EQ %10000000
S.DEV.S.WRITE .EQ %01000000
S.DEV.S.READ .EQ %00100000
S.DEV.S.ONLINE .EQ %00010000
S.DEV.S.NOFMT .EQ %00001000
S.DEV.S.WENABL .EQ %00000100
S.DEV.S.IRQ .EQ %00000010
S.DEV.S.OPENED .EQ %00000001
S.DEV.F .EQ 5
*S.DEV.F.PRT .EQ %10000000
*S.DEV.F.BLK .EQ %01000000
*S.DEV.F.DII .EQ %00100000
S.DEV.BUSID .EQ 6
S.DEV.DEVID .EQ 7
S.DEV.ROM.JMP .EQ 8 word
*
S.DEV.NAME .EQ 11 4+\0 MAX
*
S.DEV .EQ 16
*----------- Smartport ----------------
DEVMGR.STATUS .EQ 0
DEVMGR.READBLOCK .EQ 2
DEVMGR.WRITEBLOCK .EQ 4
DEVMGR.FORMAT .EQ 6
DEVMGR.CONTROL .EQ 8
DEVMGR.INIT .EQ 10
DEVMGR.OPEN .EQ 12
DEVMGR.CLOSE .EQ 14
DEVMGR.READ .EQ 16
DEVMGR.WRITE .EQ 18
DEVMGR.IRQ .EQ 20
*--------------------------------------
* 'GFX' Class Driver Functions
*--------------------------------------
DEVMGR.GFX.SETPIXEL .EQ 22
DEVMGR.GFX.GETPIXEL .EQ 24
DEVMGR.GFX.HLINE .EQ 26
DEVMGR.GFX.VLINE .EQ 28
DEVMGR.GFX.FILLRECT .EQ 30
DEVMGR.GFX.BITBLT .EQ 32
*--------------------------------------
S.DEVSTAT.S .EQ 0
S.DEVSTAT.S.BLOCK .EQ %10000000
S.DEVSTAT.S.WRITE .EQ %01000000
S.DEVSTAT.S.READ .EQ %00100000
S.DEVSTAT.S.ONLINE .EQ %00010000
S.DEVSTAT.S.NOFMT .EQ %00001000
S.DEVSTAT.S.WENABL .EQ %00000100
S.DEVSTAT.S.IRQ .EQ %00000010
S.DEVSTAT.S.OPENED .EQ %00000001
S.DEVSTAT.SIZE .EQ 1 3 bytes
S.DEVSTAT.IDSTRING .EQ 4 1 (LEN) + 16 MAX
S.DEVSTAT.T .EQ 21
S.DEVSTAT.T.RAM .EQ $00 Memory Expansion Card (RAM disk)
S.DEVSTAT.T.3.5 .EQ $01 3.5" disk
S.DEVSTAT.T.PROFILE .EQ $02 ProFile-type hard disk
S.DEVSTAT.T.GENSCSI .EQ $03 Generic SCSI
S.DEVSTAT.T.ROM .EQ $04 ROM disk
S.DEVSTAT.T.CDROM .EQ $05 SCSI CD-ROM
S.DEVSTAT.T.TAPE .EQ $06 SCSI tape or other SCSI sequential device
S.DEVSTAT.T.HD .EQ $07 SCSI hard disk
* .EQ $08 Reserved
S.DEVSTAT.T.SPRINTER .EQ $09 SCSI printer
S.DEVSTAT.T.5.25 .EQ $0A 5-1/4" disk
* .EQ $0B Reserved
* .EQ $0C Reserved
S.DEVSTAT.T.PRINTER .EQ $0D Printer
S.DEVSTAT.T.CLOCK .EQ $0E Clock
S.DEVSTAT.T.MODEM .EQ $0F Modem
S.DEVSTAT.T.DISKII .EQ $10
S.DEVSTAT.T.PRODOS .EQ $11
S.DEVSTAT.T.NET .EQ $12 Network board
S.DEVSTAT.T.XY .EQ $13 X,Y Pointing Device
S.DEVSTAT.T.CHAR .EQ $14
S.DEVSTAT.T.GFX .EQ $15
S.DEVSTAT.SUBTYPE .EQ 22
S.DEVSTAT.SUBTYPE.EXT .EQ $80
S.DEVSTAT.SUBTYPE.DSKSW .EQ $40
S.DEVSTAT.SUBTYPE.NOREM .EQ $20
S.DEVSTAT.VERSION .EQ 23
S.DEVSTAT .EQ 25
*--------------------------------------
* PS STRUCT
*--------------------------------------
S.PS.F .EQ 0
S.PS.F.INUSE .EQ %10000000
S.PS.F.INIT .EQ %01000000
S.PS.F.HOLD .EQ %00100000
S.PS.F.SLEEP .EQ %00010000
S.PS.F.EVENT .EQ %00001000
S.PS.F.ENV .EQ %00000100
S.PS.PPID .EQ 1
S.PS.PID .EQ 2
S.PS.CPID .EQ 3
S.PS.hCS .EQ 4
S.PS.hDS .EQ 5
S.PS.hSS .EQ 6
*S.PS.SP .EQ 7
S.PS.hENV .EQ 8
S.PS.hPREFIX .EQ 9
S.PS.hStdIn .EQ 10
S.PS.hStdOut .EQ 11
S.PS.hStdErr .EQ 12
S.PS.RC .EQ 13
S.PS.PC .EQ 14
S.PS.ARGC .EQ 16
S.PS.hARGS .EQ 17
S.PS.Context .EQ 24 24 Bytes
*
S.PS .EQ 48
*--------------------------------------
* 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
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
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
*
S.EVT .EQ 8
*--------------------------------------
S.TIME.CENTURY .EQ 0 19,20,21....
S.TIME.YEAR .EQ 1 0.99
S.TIME.MONTH .EQ 2 1..12
S.TIME.DAY .EQ 3 1..31
S.TIME.HOUR .EQ 4 0..23
S.TIME.MINUTE .EQ 5 0..59
S.TIME.SECOND .EQ 6 0..61
S.TIME.WDAY .EQ 7 1..7
*
S.TIME .EQ 8
*--------------------------------------
S.PFT.PATH .EQ 0 /dev, /mnt
S.PFT.HANDLER .EQ 16
S.PFT.DATA .EQ 24 8 bytes OPAQUE data for handler
*
S.PFT .EQ 32
*--------------------------------------
* S.STAT
*--------------------------------------
S.STAT.MODE .EQ 0
S.STAT.MODE.XO .EQ $0001
S.STAT.MODE.WO .EQ $0002
S.STAT.MODE.RO .EQ $0004
S.STAT.MODE.XG .EQ $0008
S.STAT.MODE.WG .EQ $0010
S.STAT.MODE.RG .EQ $0020
S.STAT.MODE.XU .EQ $0040
S.STAT.MODE.WU .EQ $0080
S.STAT.MODE.RU .EQ $0100
*S.STAT.MODE.SST .EQ $0200
*S.STAT.MODE.SGID .EQ $0400
*S.STAT.MODE.SUID .EQ $0800
S.STAT.MODE.REG .EQ $0000
S.STAT.MODE.DIR .EQ $1000
*S.STAT.MODE.CDEV .EQ $2000
*S.STAT.MODE.BDEV .EQ $3000
*S.STAT.MODE.LNK .EQ $4000
*S.STAT.MODE.DSOCK .EQ $5000
*S.STAT.MODE.SSOCK .EQ $6000
*S.STAT.MODE.FIFO .EQ $7000
S.STAT.DEV .EQ 2 WORD
S.STAT.UID .EQ 4 WORD
S.STAT.GID .EQ 6 WORD
S.STAT.INO .EQ 8 QWORD
S.STAT.NLINK .EQ 16 WORD
S.STAT.SIZE .EQ 18 DWORD
S.STAT.ATIME .EQ 22 S.TIME
S.STAT.MTIME .EQ 30 S.TIME
S.STAT.CTIME .EQ 38 S.TIME
S.STAT.BLOCKS .EQ 46 DWORD
S.STAT.BLKSIZE .EQ 50 WORD
S.STAT.P.TYPE .EQ 52 BYTE
S.STAT.P.AUXTYPE .EQ 53 WORD
S.STAT.P.SLOT .EQ 55 BYTE
S.STAT.P.DRIVE .EQ 56 BYTE
S.STAT.P.DEVSTATUS .EQ 57 BYTE
*S.STAT.P.DEVCNFLCT .EQ 58 BYTE
S.STAT.P.DEVBLOCKS .EQ 59 BYTE
*
S.STAT .EQ 64
*--------------------------------------
* S.NODE
*--------------------------------------
S.NODE.HANDLER .EQ 0 0=KRNL,!0=hLIB (LIBNFS,LIBTCPIP.....)
S.NODE.T .EQ 1
S.NODE.T.REG .EQ 0
S.NODE.T.DIR .EQ 1
S.NODE.T.CDEV .EQ 2
S.NODE.T.BDEV .EQ 3
S.NODE.T.LNK .EQ 4
S.NODE.T.DSOCK .EQ 5
S.NODE.T.SSOCK .EQ 6
S.NODE.T.FIFO .EQ 7
*--------------------------------------
S.NODE.REG.REF .EQ 2
S.NODE.REG.IOBUF .EQ 3
*
S.NODE.REG .EQ 4
*--------------------------------------
S.NODE.DIR.REF .EQ 2
S.NODE.DIR.IOBUF .EQ 3
S.NODE.DIR.EL .EQ 4
S.NODE.DIR.EPB .EQ 5
S.NODE.DIR.FC .EQ 6 word
*
S.NODE.DIR .EQ 8
*--------------------------------------
S.NODE.DEV.ID .EQ 2
S.NODE.DEV.JMP .EQ 3 word
*
S.NODE.DEV .EQ 5
*--------------------------------------
* S.NODE.LNK
*--------------------------------------
S.NODE.SSOCK.HSKT .EQ 2
S.NODE.SSOCK.OPEN .EQ 3
S.NODE.SSOCK.CLOSE .EQ 4
S.NODE.SSOCK.READ .EQ 5
S.NODE.SSOCK.WRITE .EQ 6
S.NODE.SSOCK.STATUS .EQ 7
*
S.NODE.SSOCK .EQ 8
*--------------------------------------
S.NODE.FIFO.S .EQ 2
S.NODE.FIFO.S.Opened .EQ 1
S.NODE.FIFO.S.Closed .EQ 2
S.NODE.FIFO.hMem .EQ 3
S.NODE.FIFO.Tail .EQ 4
S.NODE.FIFO.Head .EQ 5
*
S.NODE.FIFO .EQ 6
*--------------------------------------
MAN
SAVE /A2OSX.BUILD/INC/A2OSX.I