NEW PREFIX /A2OSX.BUILD AUTO 4,1 *-------------------------------------- Kernel.Init2 sei ldx #$FF txs sta SETALTZP stx A2osX.SaveSM stx A2osX.SaveSX ldx #Kernel.ZP.S-1 .1 lda Kernel.ZP,x sta CHARGET,x dex bpl .1 sta CLRALTZP >LDYAI MSG.Init2 jsr PrintFYA >LDYAI A2osX.MAIN >STYA ZPPtr1 >LDYAI CORE.Run >STYA ZPPtr2 >LDYAI A2osX.MAIN.S^$FFFF jsr Kernel.Move >LDYAI A2osX.AUX >STYA A1L Src Start Address (MAIN) >LDYAI A2osX.GP >STYA A2L Src End Address (MAIN) >LDYAI X.GUIOSD >STYA A4L Dst Address (AUX) sec Main To Aux jsr AuxMove >LDYAI A2osX.GP >STYA ZPPtr1 >LDYAI A2osX.SYSCALL >STYA ZPPtr2 >LDYAI A2osX.GP.S^$FFFF jsr Kernel.Move sta SETALTZP bit RRAMWRAMBNK2 bit RRAMWRAMBNK2 >LDYAI A2osX.D2 >STYA ZPPtr1 >LDYAI $D000 >STYA ZPPtr2 >LDYAI A2osX.D2.S^$FFFF jsr Kernel.Move bit RRAMWRAMBNK1 bit RRAMWRAMBNK1 >LDYAI A2osX.D1 >STYA ZPPtr1 >LDYAI $D000 >STYA ZPPtr2 >LDYAI A2osX.D1.S^$FFFF jsr Kernel.Move >LDYAI A2osX.E0 >STYA ZPPtr1 >LDYAI $E000 >STYA ZPPtr2 >LDYAI A2osX.E0.S^$FFFF jsr Kernel.Move bit RROMBNK1 sta CLRALTZP cli jsr KConfigLoad lda A2osX.HZ pha >LDYAI MSG.HZ jsr PrintFYA >LDYAI MSG.Init2.OK jsr PrintFYA *-------------------------------------- >DEBUGOA *-------------------------------------- Kernel.Init3 sta SETALTZP bit RRAMWRAMBNK1 bit RRAMWRAMBNK1 lda #$ff Make sure we are in Kernel Mode during setup sta IRQ.InKernel jsr SysScrInit jsr MemMgrInit >LDYAI FD.NULL >SYSCALL MKDev >LDYAI FD.SYS >SYSCALL MKDev jsr PS0.Init >LDYAI MSG.Init3 >SYSCALL puts jsr CPU.Init.6502 jsr CPU.Init.Z80 jsr DevMgrInit jsr IrqMgrInit bcs * jsr EvtMgrInit jsr FltMgrInit jsr TskMgrInit bcs * ldy #S.PS.hPREFIX lda (pPs),y jsr K.GetMemPtr >PUSHYA >PUSHBI 2 >LDYAI MSG.Prefix >SYSCALL printf lda KBD bpl .1 sta KBDSTROBE cmp #$84 CTRL-D for Maintenace mode bne .1 >PUSHBI 0 >LDYAI MSG.MMode >SYSCALL printf >LDYAI STARTUP.SHELL bra .8 .1 >PUSHWI STARTUP.CMDLINE >PUSHBI 2 >LDYAI MSG.Startup >SYSCALL printf >LDYAI STARTUP.CMDLINE .8 >SYSCALL ExpandStr phx pha >PUSHWI K.Buf256 pla >SYSCALL Args2ArgV pla jsr K.FreeMem >PUSHBI 0 PS Flags >LDYAI K.Buf256 >SYSCALL Exec bcs .9 >PUSHBI 1 >LDYAI MSG.Init3.OK >SYSCALL printf >DEBUGOA jmp CORE.Run .9 >PUSHA >PUSHBI 1 >LDYAI MSG.StartupErr >SYSCALL printf bra * No need to discard Expanded CMDLINE *-------------------------------------- * INIT2 Subs *-------------------------------------- Kernel.Move >STYA ZPPtr3 ldy #0 .1 inc ZPPtr3 bne .2 inc ZPPtr3+1 beq .9 .2 lda (ZPPtr1),y sta (ZPPtr2),y iny bne .1 inc ZPPtr1+1 inc ZPPtr2+1 bne .1 .9 rts *-------------------------------------- KConfigLoad >LDYAI MSG.KCREAD jsr PrintFYA jsr MLI .DA #MLIOPEN .DA MLIOPEN00 bcs .9 lda MLIOPEN00+5 sta MLIREAD00+1 sta MLICLOSE00+1 jsr MLI .DA #MLIREAD .DA MLIREAD00 php pha jsr MLI .DA #MLICLOSE .DA MLICLOSE00 pla plp bcs .9 >LDYAI MSG.KCREAD.OK jsr PrintFYA rts .9 >LDYAI MSG.KCREAD.KO jsr PrintFYA rts *-------------------------------------- * INIT3 Subs *-------------------------------------- SysScrInit ldx #0 ldy #0 .2 lda SYSSCREEN.TOP,y beq .3 cmp #$40 bcc .10 cmp #$5F bcs .10 and #$3F .10 sta SETWRITEAUX sta SYS.BASL0,x sta CLRWRITEAUX iny lda SYSSCREEN.TOP,y beq .5 cmp #$40 bcc .11 cmp #$5F bcs .11 and #$3F .11 sta SYS.BASL0,x iny inx bra .2 .3 lda #$20 .4 sta SETWRITEAUX sta SYS.BASL0,x sta CLRWRITEAUX .5 lda #$20 sta SYS.BASL0,x inx cpx #40 bne .4 rts *-------------------------------------- PS0.Init >LDYAI CORE.S.PS0 Select Process 0 (Kernel) >STYA pPs >LDYAI K.STACKTOP >STYA pStack >PUSHWI 0 >PUSHBI 0 >LDYAI DEV.SYS >SYSCALL fopen bcs .9 ldy #S.PS.hStdIn sta (pPs),y sta CORE.S.PS0+S.PS.hStdIn iny #S.PS.hStdOut sta (pPs),y sta CORE.S.PS0+S.PS.hStdOut iny #S.PS.hStdErr sta (pPs),y sta CORE.S.PS0+S.PS.hStdErr clc .9 rts *-------------------------------------- CPU.Init.6502 >PUSHBI 0 >LDYAI MSG.CPU >SYSCALL printf jsr Detect6502 A = CPU type sta A2osX.CPUTYPE and #$F asl tax ldy MSG.CPUTYPE,x lda MSG.CPUTYPE+1,x >SYSCALL puts lda MACHID and #MACHID.T cmp #MACHID.T.IIc bne .10 jmp CPU.Init.Z80 .10 >PUSHBI 0 >LDYAI MSG.CPU.SPEED >SYSCALL printf stz A2osX.RANDOM16 stz A2osX.RANDOM16+1 php sei .1 bit VBL bpl .2 .2 bit VBL bmi .2 ldx #0 Count LO lda #0 Count HI .3 ldy #3 (2) .4 nop (2) dey (2) bne .4 (2*) inc A2osX.RANDOM16 (6) bne .5 (2*) inc A2osX.RANDOM16+1 (6) bit VBL (4) bpl .3 (2*) bmi .6 .5 nop (2) nop (2) nop (2) bit VBL (4) bpl .3 (2*) .6 plp stz A2osX.CPUSPEED .7 sec lda A2osX.RANDOM16 sbc #100 tax lda A2osX.RANDOM16+1 sbc /100 bcc .8 stx A2osX.RANDOM16 sta A2osX.RANDOM16+1 inc A2osX.CPUSPEED bra .7 .8 lda A2osX.RANDOM16 sta A2osX.CPUSPEED+1 >PUSHA push CPU speed LO lda A2osX.CPUSPEED >PUSHA push CPU speed HI >PUSHBI 2 >LDYAI MSG.CPU.SPEEDOK >SYSCALL printf rts *-------------------------------------- CPU.Init.Z80 >PUSHBI 0 >LDYAI MSG.Z80 >SYSCALL printf jsr DetectZ80 bcs .9 sta A2osX.Z80SLOT >PUSHA tax lda #A2osX.S.Z80 sta A2osX.S,x >PUSHBI 1 >LDYAI MSG.Z80.OK >SYSCALL printf rts .9 >LDYAI MSG.Z80.KO >SYSCALL puts rts *-------------------------------------- * Out: * A = $60, 6502 * A = $61, 65C02 * A = $62, 65R02 * A = $63, 65816 *-------------------------------------- Detect6502 ldy #0 Test 6502 BCD bug sed lda #$99 clc adc #$01 cld bmi .9 BUG!, we have 6502 ldy #3 test 65C816 TYX Instruction ldx #0 .OP 65816 tyx TYX: if 65C816, x becomes non-zero .OP 65C02 bne .9 worked! 65C816 dey y=2 -> R65C02 ldx $EA save zp $EA stz $EA store 0 in $EA * .OP 65R02 .HS F7EA For compatibility with A2osX.ASM * smb 7,$EA if not Rockwell, assemble as nop nop * .OP 65C02 asl $EA cs if Rockwell stx $EA restore zp $EA bcs .9 dey y=1 -> 65C02 .9 tya ora #$60 rts *-------------------------------------- * Out: * A = Z80 Slot *-------------------------------------- DetectZ80 ldx #Z80Code.Size .1 lda Z80Code.Start-1,x sta Z80CODE-1,x 00000H for Z80 dex bne .1 stz ZPPtr1 lda #$C1 sta ZPPtr1+1 .2 sta (ZPPtr1) lda $100D bmi .8 inc ZPPtr1+1 lda ZPPtr1+1 cmp #$C8 beq .9 CS clc adc #$20 sta $100A bra .2 .8 lda ZPPtr1+1 and #$0F clc .9 rts *-------------------------------------- MemMgrInit >LDYAI Mem.MHiMem >STYA Mem.HiMem >STYA Mem.Free >LDYAI Mem.MLoMem >STYA Mem.LoMem stz Mem.LastSlot Reserve Slot #0 sta SETWRITEAUX >LDYAI Mem.XHiMem >STYA Mem.HiMem >STYA Mem.Free >LDYAI Mem.XLoMem >STYA Mem.LoMem stz Mem.LastSlot Reserve Slot #0 sta CLRWRITEAUX ldx #K.DEV.MAX*2-1 .1 stz Dev.Table.hPath,x dex bpl .1 ldx #K.NOD.MAX*2-1 .2 stz Nod.Table.hPath,x dex bpl .2 ldx #K.PS.MAX*4-1 .3 stz PS.Table.PID,x dex bpl .3 rts *-------------------------------------- * Setup AuxLC $FFFE->Kernel IRQ Handler * if irq not handled, jmp (S.IrqMgrOldFFFE) *-------------------------------------- IrqMgrInit >LDYAI MSG.IRQ >SYSCALL puts php sei >LDYA $FFFE >STYA K.IrqHAuxLC.JMP+1 >LDYAI K.IrqHAuxLC >STYA $FFFE >LDYAI GP.IrqH >STYA K.MLI.PARAMS+2 >MLICALL MLIALLOCIRQ bcs .90 lda K.MLI.PARAMS+1 sta IRQ.INTNUM plp jsr IrqMgrInit.TClock bcs .1 lda #"C" sta SYS.BASL0+38 >LDYAI K.IrqH.TCLOCK >STYA K.IrqHAuxLC.JSR+1 >STYA GP.IrqH.JSR+1 >LDYAI MSG.IRQ.CLOCK >SYSCALL puts clc rts .1 jsr IrqMgrInit.Mouse bcs .8 lda #"V" sta SYS.BASL0+38 >LDYAI K.IrqH.VBL >STYA K.IrqHAuxLC.JSR+1 >STYA GP.IrqH.JSR+1 >LDYAI MSG.IRQ.VBL >SYSCALL puts clc rts .8 jsr IrqMgrInit.HZ2Tick lda #"P" sta SYS.BASL0+38 >LDYAI MSG.IRQ.POLL >SYSCALL puts clc rts .90 plp .9 sec rts *-------------------------------------- IrqMgrInit.TClock stz ZPPtr1 Try finding a Mouse Card... lda #$C1 sta ZPPtr1+1 .1 ldy #TClock.SIG.Cnt-1 .2 lda (ZPPtr1),y cmp TClock.SIG,y bne .3 dey bpl .2 bra .4 .3 inc ZPPtr1+1 no match, try next slot.... lda ZPPtr1+1 cmp #$C8 bne .1 sec rts .4 lda ZPPtr1+1 get $Cn and #$f tax get $0n asl asl asl asl tay get $n0 sty IRQ.VBL.n0 php sei lda #$40 Enable interrupt sta $c080,y sta $478,x sta $7f8,x lda #64 sta CORE.TickPerSec sta CORE.TickSec lda #11 sta CORE.TickPer10t sta CORE.Tick10t dec CORE.IRQMode plp clc rts *-------------------------------------- IrqMgrInit.Mouse stz ZPPtr1 Try finding a Mouse Card... lda #$C1 sta ZPPtr1+1 .1 ldx #Mouse.SIG-Mouse.OFS-1 .2 ldy Mouse.OFS,x lda (ZPPtr1),y cmp Mouse.SIG,x bne .3 dex bpl .2 bra .4 .3 inc ZPPtr1+1 no match, try next slot.... lda ZPPtr1+1 cmp #$C8 bne .1 sec rts .4 lda ZPPtr1+1 sta .11+2 sta K.IrqH.VBL.MSM+2 sta K.IrqH.VBL.MRM+2 and #$0f sta IRQ.VBL.0n asl asl asl asl sta IRQ.VBL.n0 php sei bit RROMBNK2 Renable ROM to allow MOUSE II firmware works properly ldy #INITMOUSE jsr .10 ldy #SETMOUSE lda #MOUSEMODx.INTVBL+MOUSEMODx.ACTIVE jsr .10 bit RRAMWRAMBNK1 Back To LC Ram bit RRAMWRAMBNK1 ldy #SERVEMOUSE lda (ZPPtr1),y sta K.IrqH.VBL.MSM+1 ldy #READMOUSE lda (ZPPtr1),y sta K.IrqH.VBL.MRM+1 jsr IrqMgrInit.HZ2Tick dec CORE.IRQMode plp clc rts .9 plp sec rts .10 pha lda (ZPPtr1),y sta .11+1 pla ldx .11+2 Cn ldy IRQ.VBL.n0 .11 jmp $ffff SELF MODIFIED *-------------------------------------- IrqMgrInit.HZ2Tick ldx #50 lda A2osX.HZ sta CORE.TickPer10t sta CORE.Tick10t cmp #5 beq .1 ldx #60 .1 stx CORE.TickPerSec stx CORE.TickSec rts *-------------------------------------- DevMgrInit >LDYAI MSG.DEV >SYSCALL puts lda DEVCNT sta DevMgrInit.DEVCNT .1 ldx DevMgrInit.DEVCNT lda DEVLST,x and #$F0 asl php Save Drive 1/2 in C ror DSSS0000 lsr lsr lsr tax 000DSSS0 lsr 0000DSSS and #$7 sta FD.BDEV+S.FD.DEV.BUSID lda DEVPTRS,x sta FD.BDEV+S.FD.DEV.BUSPTR lda DEVPTRS+1,x sta FD.BDEV+S.FD.DEV.BUSPTR+1 sta ZPPtr1+1 stz ZPPtr1 plp lda #0 adc #1 Make DevID 1 or 2 sta FD.BDEV+S.FD.DEV.DEVID lda ZPPtr1+1 cmp #$D0 Disk II Driver is $D000 bne .2 jsr DevMgrInit.DII lda #A2osX.S.DII bra .7 Go mark slot as USED .2 cmp #$FF /RAM is always $FF00 bne .3 jsr DevMgrInit.RAM bra .8 .3 and #$F0 cmp #$C0 beq .4 jsr DevMgrInit.USR Outside ROM space, User loaded BLK dev bra .8 .4 ldx #SmartPort.SIG-SmartPort.OFS-1 .5 ldy SmartPort.OFS,x Check if there is a smartport firmware lda (ZPPtr1),y cmp SmartPort.SIG,x bne .8 not a Disk Controller... dex bpl .5 ldy #7 lda (ZPPtr1),y bne .6 $Cn07=00 : SmartPort lda ZPPtr1 get $Cn and #$f get $0n cmp FD.BDEV+S.FD.DEV.DEVID same as SSS ? beq .51 inc FD.BDEV+S.FD.DEV.DEVID Remapped SP devices.... inc FD.BDEV+S.FD.DEV.DEVID Add 2 to DEVID (2 & 3) .51 jsr DevMgrInit.SP lda #A2osX.S.SP bra .7 .6 jsr DevMgrInit.BLK lda #A2osX.S.BLK .7 ldx FD.BDEV+S.FD.DEV.BUSID sta A2osX.S,x .8 dec DevMgrInit.DEVCNT bmi .80 jmp .1 .80 clc rts DevMgrInit.DEVCNT .BS 1 *-------------------------------------- DevMgrInit.DII >LDYAI DRV.DiskII jmp DevMgrInit.AddBDev *-------------------------------------- DevMgrInit.RAM >LDYAI DRV.RamDrive jmp DevMgrInit.AddBDev *-------------------------------------- DevMgrInit.USR >LDYAI DRV.BlkDevice jmp DevMgrInit.AddBDev *-------------------------------------- DevMgrInit.BLK ldy #$ff lda (ZPPtr1),y sta FD.BDEV+S.FD.DEV.BUSPTR >LDYAI DRV.BlkDevice jmp DevMgrInit.AddBDev *-------------------------------------- DevMgrInit.SP ldy #$ff lda (ZPPtr1),y clc adc #3 Compute smartport entry point sta .1+1 sta FD.BDEV+S.FD.DEV.BUSPTR lda ZPPtr1+1 sta .1+2 lda FD.BDEV+S.FD.DEV.DEVID sta SP.DEV.STATUS.DEVID .1 jsr $ffff Self Modified .DA #0 Status .DA SP.DEV.STATUS bcs .9 ldx SP.DEV.STATUS.DATA+S.DIB.S >LDYAI DRV.SmartPort jsr DevMgrInit.AddBDev .9 rts *-------------------------------------- DevMgrInit.AddBDev >STYA FD.BDEV+S.FD.DEV.DRVPTR lda FD.BDEV+S.FD.DEV.BUSID ora #$30 sta FD.BDEV+S.FD.DEV.NAME+1 SnDy lda FD.BDEV+S.FD.DEV.DEVID ora #$30 sta FD.BDEV+S.FD.DEV.NAME+3 SxDn >PUSHWI FD.BDEV+S.FD.DEV.NAME >PUSHBI 2 >LDYAI MSG.BLKDEV >SYSCALL printf >LDYAI FD.BDEV >SYSCALL MKDev rts *-------------------------------------- EvtMgrInit >LDYAI MSG.EVT >SYSCALL puts lda #$A5 sta A2osX.TIMER16 lda #$9B sta A2osX.TIMER16+1 lda /Evt.Table sta pEvent+1 clc rts *-------------------------------------- FltMgrInit >LDYAI MSG.FLT >SYSCALL puts stz Flt.Table clc rts *-------------------------------------- TskMgrInit >LDYAI MSG.TSK >SYSCALL puts >LDYAI K.ENV.SIZE get a buffer for ENV jsr K.GetMem0 make sure blank!! bcs .9 txa ldy #S.PS.hENV sta (pPs),y >LDYAI K.Buf256 >STYA K.MLI.PARAMS+1 >MLICALL MLIGETPREFIX bcs .9 ldy K.Buf256 iny lda #0 jsr K.GetMem >STYA ZPPtr1 txa ldy #S.PS.hPREFIX sta (pPs),y ldy K.Buf256 lda #0 sta (ZPPtr1),y .4 lda K.Buf256,y dey sta (ZPPtr1),y bne .4 >PUSHW ZPPtr1 push ENV value = PREFIX >LDYAI I.ENV.A2osX push ENV name = A2OSX >SYSCALL SetEnv bcs .9 >LDYAI I.ENV.PATH >SYSCALL PutEnv bcs .9 >LDYAI I.ENV.LIB >SYSCALL PutEnv bcs .9 >LDYAI I.ENV.DRV >SYSCALL PutEnv .9 rts *-------------------------------------- * Modified CHARGET/CHARGOT for ROM CALL * CHRGET .EQ $B1 - C8 *-------------------------------------- Kernel.ZP .PH $B1 CHARGET inc TXTPTR bne CHARGOT inc TXTPTR+1 CHARGOT lda $ffff beq IsDigit.9 IsDigit cmp #'0' bcc IsDigit.9 cmp #'9'+1 rts IsDigit.9 sec rts .EP Kernel.ZP.S .EQ *-Kernel.ZP *-------------------------------------- Z80Code.Start .HS 31FF00 START: LD SP,000FFH Init Stack .HS 3EFF LD A,0FFH Set Flag .HS 320D00 LD (FLAG),A .HS 3200E1 LD (0E100H),A Back to 6502 .HS 18F3 JR START Loop .HS 00 FLAG: .DB 0 Z80Code.Size .EQ *-Z80Code.Start *-------------------------------------- Mouse.OFS .HS 05070B0CFB Mouse.SIG .HS 38180120D6 *-------------------------------------- TClock.SIG .HS 0878282c58ff700538b00118b8087848 .HS 8a489848adffcf201ac86868ba8df807 TClock.SIG.Cnt .EQ *-TClock.SIG *-------------------------------------- MSG.Init2 .AZ "A2osX[Stage2]:Init\nRelocating Kernel...\n" MSG.HZ .AZ "Kernel SYS Timer Set For %d0 hz Machine.\n" MSG.KCREAD .AZ "Reading Kernel Config File..." MSG.KCREAD.OK .AZ "OK\n" MSG.KCREAD.KO .AZ "\nError While Reading Kernel Config File, Using Default.\n" MSG.Init2.OK .AZ "A2osX[Stage2]:Complete.\n" *-------------------------------------- SYSSCREEN.TOP .AZ "A2osX 0.92 Console" MSG.Init3 .AS "A2osX[Stage3]:Init " .AZ "*** Press Ctrl-D for Mantenance Mode ***" MSG.DEV .AZ "Device Manager..." MSG.BLKDEV .AZ " Adding : /DEV/%s\r\n" MSG.IRQ .AZ "Interrupt Manager..." MSG.IRQ.VBL .AZ " Mouse VBL IRQ Activated." MSG.IRQ.CLOCK .AZ " Clock Card IRQ Activated." MSG.IRQ.POLL .AZ " Polling Mode." MSG.EVT .AZ "Event Manager..." MSG.FLT .AZ "Path Filter..." MSG.TSK .AZ "Task Manager..." MSG.Prefix .AZ "Root:%s\r\n" MSG.MMode .AZ "Ctrl-D Pressed, entering Maintenance mode..." MSG.Startup .AZ "Executing Startup Script:%s " MSG.StartupErr .AZ "Failed : [$%h]\r\n" MSG.Init3.OK .AZ "OK\r\nA2osX[Stage3]:Complete.\r\n" *-------------------------------------- MSG.CPU .AZ "Checking CPU..." MSG.CPUTYPE .DA MSG.6502 .DA MSG.65C02 .DA MSG.65R02 .DA MSG.65816 MSG.6502 .AZ "6502." MSG.65C02 .AZ "65C02." MSG.65R02 .AZ "65R02." MSG.65816 .AZ "65816." MSG.CPU.SPEED .AZ "Checking CPU Speed..." MSG.CPU.SPEEDOK .AZ "%d.%02d Mhz.\r\n" MSG.Z80 .AZ "Checking Z80 CPU..." MSG.Z80.OK .AZ "Detected In Slot %d.\r\n" MSG.Z80.KO .AZ "Not Detected." *-------------------------------------- DEV.SYS .AZ "/DEV/SYS" I.ENV.A2osX .AZ "A2OSX" I.ENV.PATH .AZ "PATH=${A2OSX}SBIN/;${A2OSX}BIN/" I.ENV.LIB .AZ "LIB=${A2OSX}LIB/" I.ENV.DRV .AZ "DRV=${A2OSX}DRV/" STARTUP.SHELL .AZ "${A2OSX}SBIN/SHELL" STARTUP.CMDLINE .AZ "${A2OSX}SBIN/SHELL ${A2OSX}A2osX.STARTUP" *-------------------------------------- MLIOPEN00 .DA #3 .DA A2OSXCONF .DA $B000 .BS 1 A2OSXCONF >PSTR "A2osX.KCONFIG" *-------------------------------------- MLIREAD00 .DA #4 .BS 1 .DA A2osX.KCONFIG .DA 16 .BS 2 *-------------------------------------- MLICLOSE00 .DA #1 .BS 1 *-------------------------------------- FD.NULL .DA #S.FD.T.CDEV .DA #0 HANDLER .DA #0 BUSID .DA #DEVID.NULL .DA 0 BUSPTR .DA DRV.NULL .AZ "NULL" NAME .HS 000000 *-------------------------------------- FD.SYS .DA #S.FD.T.CDEV .DA #0 HANDLER .DA #0 BUSID .DA #DEVID.SYS .DA 0 BUSPTR .DA DRV.SYS .AZ "SYS" NAME .HS 00000000 *-------------------------------------- FD.BDEV .DA #S.FD.T.BDEV .DA #0 HANDLER .DA #0 BUSID .DA #0 DEVID .BS 2 BUSPTR .BS 2 DRVPTR .AZ "S1D1" NAME .HS 000000 *-------------------------------------- SmartPort.OFS .HS 010305 SmartPort.SIG .HS 200003 *-------------------------------------- SP.DEV.STATUS .DA #3 SP.DEV.STATUS.DEVID .BS 1 .DA SP.DEV.STATUS.DATA .DA S.IOCTL.STATCODE.GETDIB SP.DEV.STATUS.DATA .BS S.DIB *-------------------------------------- MAN SAVE /A2OSX.SRC/SYS/KERNEL.S.INIT LOAD /A2OSX.SRC/SYS/KERNEL.S ASM