A2osX/INC/A2osX.I.txt

521 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.MLICALL .EQ $BD06
A2osX.ROMCALL .EQ $BD09
A2osX.BADCALL .EQ $BD0C
*--------------------------------------
pDevJmp .EQ $BD10
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
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
* .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
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
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
* .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
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
*--------------------------------------
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
SYS.SetLoMem .EQ $CC
SYS.NewStr.YA .EQ $CE
* .EQ $D0
* .EQ $D2
* .EQ $D4
* .EQ $D6
SYS.LoadStkObj.YA .EQ $D8
SYS.GetStkObj.A .EQ $DA
SYS.FreeStkObj.A .EQ $DC
SYS.GetMemStat.YA .EQ $DE
SYS.Sleep .EQ $E0
*--------------------------------------
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.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
*--------------------------------------
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
*--------------------------------------
* '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
*--------------------------------------
2017-01-12 17:43:45 +00:00
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.IDS .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.ST .EQ 22
S.DEVSTAT.ST.EXT .EQ $80
S.DEVSTAT.ST.DSKSW .EQ $40
S.DEVSTAT.ST.NOREM .EQ $20
2017-01-12 17:43:45 +00:00
S.DEVSTAT.VERSION .EQ 23
S.DEVSTAT .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.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.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.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