A2osX/INC/A2osX.I.txt

538 lines
13 KiB
Plaintext
Raw Normal View History

2015-03-14 21:48:35 +00:00
PR#3
PREFIX /A2OSX.BUILD
LOMEM $A00
2015-03-14 21:48:35 +00:00
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
2016-09-02 15:14:24 +00:00
*--------------------------------------
2015-03-14 21:48:35 +00:00
* A2osX GLOBAL PAGE
* $BD00->$BD0F : Public Vetors
2015-03-14 21:48:35 +00:00
*--------------------------------------
A2osX.SYSCALL .EQ $BD00
A2osX.LIBCALL .EQ $BD03
A2osX.ATKCALL .EQ $BD06
A2osX.ROMCALL .EQ $BD09
A2osX.BADCALL .EQ $BD0C
*--------------------------------------
pDevJmp .EQ $BD10
A2osx.SLEEP .EQ $BD13
2015-03-14 21:48:35 +00:00
*--------------------------------------
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 screen devices)
2015-03-14 21:48:35 +00:00
A2osX.CPUTYPE .EQ $BEE5
A2osX.CPUSPEED .EQ $BEE6 WORD, (->255.99 Mhz)
2015-03-14 21:48:35 +00:00
A2osX.Z80SLOT .EQ $BEE8
A2osX.Z80SPEED .EQ $BEE9 WORD
2016-03-13 21:50:43 +00:00
2017-10-27 14:56:46 +00:00
A2OsX.InKernel .EQ $BEEB
A2osX.TIMER16 .EQ $BEEC WORD
A2osX.RANDOM16 .EQ $BEEE WORD
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 5/6 for 50/60Hz
A2osX.F .EQ $BEF8
A2osX.F.CHROOT .EQ %10000000 ChRooting to /RAMx
A2osX.F.PMODE .EQ %01000000 Preemptive Mode
A2osX.S .EQ $BEF8 $BEF9->$BEFF, 7 slots
A2osX.S.Z80 .EQ $80
A2osX.S.VSDRIVE .EQ $81
A2osX.S.ATCARD .EQ $82
A2osX.S.DII .EQ $C0
A2osX.S.BLK .EQ $C1
A2osX.S.SP .EQ $C2
A2osX.S.COM .EQ $E0
A2osX.S.XY .EQ $E1
A2osX.S.NIC .EQ $E2
A2osX.S.DISABLE .EQ $FF
2016-06-07 06:10:18 +00:00
*--------------------------------------
* 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
2017-12-14 16:25:03 +00:00
* .EQ $16
* .EQ $18
* .EQ $1A
* .EQ $1C
* .EQ $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
2017-12-14 16:25:03 +00:00
*SYS.FGetS .EQ $2C
*SYS.GetS.YA .EQ $2E
SYS.FOpen .EQ $30
2017-01-12 17:43:45 +00:00
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
2017-01-12 17:43:45 +00:00
SYS.FSeek.SET .EQ $00
SYS.FSeek.CUR .EQ $01
SYS.FSeek.END .EQ $02
SYS.FTell .EQ $3C
SYS.FEOF .EQ $3E
2017-12-14 16:25:03 +00:00
SYS.Remove.YA .EQ $40
SYS.Rename .EQ $42
* .EQ $44
* .EQ $46
SYS.GetDevByID.A .EQ $48
SYS.GetDevByName.YA .EQ $4A
* .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
* .EQ $62
SYS.LoadFile .EQ $64
SYS.LoadTxtFile.YA .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
SYS.StrToF .EQ $76
SYS.StrToL .EQ $78
* .EQ $7A
SYS.RealPath.YA .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
2017-12-14 16:25:03 +00:00
*--------------------------------------
SYS.ExecPSNewEnv.YA .EQ $A0
SYS.ExecPS.YA .EQ $A2
SYS.CreatePSNewEnv.YA .EQ $A4
SYS.CreatePS.YA .EQ $A6
* .EQ $A8
* .EQ $AA
SYS.GetPSStatus.A .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
*--------------------------------------
2017-10-27 14:56:46 +00:00
SYS.FAdd .EQ $C0
SYS.FSub .EQ $C2
SYS.FMult .EQ $C4
SYS.FDiv .EQ $C6
SYS.FPwr .EQ $C8
* .EQ $CA
SYS.LRIntF .EQ $CC
SYS.Float .EQ $CE
2017-10-27 14:56:46 +00:00
SYS.Log .EQ $D0
SYS.Sqr .EQ $D2
SYS.Exp .EQ $D4
SYS.Cos .EQ $D6
SYS.Sin .EQ $D8
SYS.Tan .EQ $DA
SYS.ATan .EQ $DC
* .EQ $DF
*--------------------------------------
SYS.GetMem .EQ $E0
SYS.FreeMem.A .EQ $E2
SYS.GetMemPtr.A .EQ $E4
SYS.GetMemByID.A .EQ $E6
SYS.GetMem.YA .EQ $E8
SYS.GetMem0.YA .EQ $EA
SYS.NewStr.YA .EQ $EC
SYS.GetMemStat.YA .EQ $EE
* .EQ $F0
2017-10-27 14:56:46 +00:00
* .EQ $F2
* .EQ $F4
* .EQ $F6
SYS.NewStkObj.YA .EQ $F8
SYS.LoadStkObj .EQ $FA
2017-10-27 14:56:46 +00:00
SYS.GetStkObj.A .EQ $FC
SYS.FreeStkObj.A .EQ $FE
*--------------------------------------
2016-01-16 22:06:36 +00:00
* ProDOS ERROR CODES : $00->$5F
* Lib ERROR CODES : $80->$BF
* Kernel ERROR CODES : $C0->$FF
*--------------------------------------
K.E.OOM .EQ $FF Out Of Memory Error
K.E.OOH .EQ $FE Out Of Handle Error
*--------------------------------------
K.E.NSP .EQ $DD No Such Process Error
*--------------------------------------
K.E.SYN .EQ $CF Syntax Error
K.E.ENVF .EQ $CE Env is Full
K.E.IBIN .EQ $CD Invalid BIN format
K.E.FTB .EQ $CC File Too Big Error
*--------------------------------------
* MEM STRUCT
*--------------------------------------
S.MEM.F .EQ 0
S.MEM.F.AUX .EQ %10000000 Request Stock Object in AUX mem
S.MEM.F.INUSE .EQ %10000000 (Internal Flag)
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.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.MSTAT.ML .EQ 0
S.MSTAT.MF .EQ 2
S.MSTAT.MH .EQ 4
S.MSTAT.MLast .EQ 6
*
S.MSTAT.XL .EQ 8
S.MSTAT.XF .EQ 10
S.MSTAT.XH .EQ 12
S.MSTAT.XLast .EQ 14
*
S.MSTAT.DL .EQ 16
S.MSTAT.DF .EQ 18
S.MSTAT.DH .EQ 20
S.MSTAT.DCount .EQ 22
*
S.MSTAT .EQ 24
*--------------------------------------
* DEVMGR (new API) = Smartport
*--------------------------------------
2017-01-12 17:43:45 +00:00
* 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
2017-01-12 17:43:45 +00:00
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
2017-01-12 17:43:45 +00:00
*
S.DEV .EQ 16
2017-01-12 17:43:45 +00:00
*----------- 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
2017-01-12 17:43:45 +00:00
*--------------------------------------
S.DSTAT.S .EQ 0
S.DSTAT.S.BLOCK .EQ %10000000
S.DSTAT.S.WRITE .EQ %01000000
S.DSTAT.S.READ .EQ %00100000
S.DSTAT.S.ONLINE .EQ %00010000
S.DSTAT.S.NOFMT .EQ %00001000
S.DSTAT.S.WENABL .EQ %00000100
S.DSTAT.S.IRQ .EQ %00000010
S.DSTAT.S.OPENED .EQ %00000001
S.DSTAT.SIZE .EQ 1 3 bytes
S.DSTAT.IDS .EQ 4 1 (LEN) + 16 MAX
S.DSTAT.T .EQ 21
S.DSTAT.T.RAM .EQ $00 Memory Expansion Card (RAM disk)
S.DSTAT.T.3.5 .EQ $01 3.5" disk
S.DSTAT.T.PROFILE .EQ $02 ProFile-type hard disk
S.DSTAT.T.GENSCSI .EQ $03 Generic SCSI
S.DSTAT.T.ROM .EQ $04 ROM disk
S.DSTAT.T.CDROM .EQ $05 SCSI CD-ROM
S.DSTAT.T.TAPE .EQ $06 SCSI tape or other SCSI sequential device
S.DSTAT.T.HD .EQ $07 SCSI hard disk
* .EQ $08 Reserved
S.DSTAT.T.SPRINTER .EQ $09 SCSI printer
S.DSTAT.T.5.25 .EQ $0A 5-1/4" disk
* .EQ $0B Reserved
* .EQ $0C Reserved
S.DSTAT.T.PRINTER .EQ $0D Printer
S.DSTAT.T.CLOCK .EQ $0E Clock
S.DSTAT.T.MODEM .EQ $0F Modem
S.DSTAT.T.DISKII .EQ $10
S.DSTAT.T.PRODOS .EQ $11
S.DSTAT.T.NET .EQ $12 Network board
S.DSTAT.T.XY .EQ $13 X,Y Pointing Device
S.DSTAT.T.CHAR .EQ $14
S.DSTAT.T.GFX .EQ $15
S.DSTAT.ST .EQ 22
S.DSTAT.ST.EXT .EQ $80
S.DSTAT.ST.DSKSW .EQ $40
S.DSTAT.ST.NOREM .EQ $20
S.DSTAT.VERSION .EQ 23
*
S.DSTAT .EQ 25
*--------------------------------------
* PS STRUCT
*--------------------------------------
S.PS.F .EQ 0
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.DUPENV .EQ %00000100
2017-01-12 17:43:45 +00:00
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
2017-01-12 17:43:45 +00:00
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.ZP .EQ 24 24 Bytes
*
S.PS .EQ 48
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.B2 is a hMem
S.EVT.F.hMEM1 .EQ %00010000 Indicates That S.EVT.B1 is a hMem
2016-03-13 21:50:43 +00:00
S.EVT.hDEV .EQ 1
S.EVT.B1 .EQ 2
S.EVT.B2 .EQ 3
S.EVT.W1 .EQ 4
S.EVT.W2 .EQ 6
*
2016-03-13 21:50:43 +00:00
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
2016-08-24 15:42:33 +00:00
*--------------------------------------
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
2016-09-01 15:42:38 +00:00
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
2016-08-24 15:42:33 +00:00
*
S.STAT .EQ 64
2016-08-24 15:42:33 +00:00
*--------------------------------------
* 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
2017-01-12 17:43:45 +00:00
S.NODE.DEV.JMP .EQ 3 word
*
2017-01-12 17:43:45 +00:00
S.NODE.DEV .EQ 5
*--------------------------------------
* S.NODE.LNK
2016-08-24 15:42:33 +00:00
*--------------------------------------
2017-03-09 07:11:44 +00:00
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
2017-03-09 07:11:44 +00:00
*
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
*
2017-01-12 17:43:45 +00:00
S.NODE.FIFO .EQ 6
2016-08-24 15:42:33 +00:00
*--------------------------------------
2015-03-14 21:48:35 +00:00
MAN
SAVE /A2OSX.BUILD/INC/A2OSX.I