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 *-------------------------------------- * 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 * .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 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.ExecProcessNewEnvYA .EQ $A0 SYS.ExecProcessYA .EQ $A2 SYS.CreateProcessNewEnvYA .EQ $A4 SYS.CreateProcessYA .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 * .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 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 *-------------------------------------- * 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.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 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