A2osX/SYS/KERNEL.S.INIT3.txt

1170 lines
20 KiB
Plaintext
Raw Permalink 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.

NEW
AUTO 3,1
*--------------------------------------
* Runs in AUX memory
*--------------------------------------
INIT3 jsr INIT3.CDevs
bcs *
>SS
>PUSHWI DEV.CONSOLE
>PUSHBI O.RDWR
>PUSHBI S.FI.T.TXT
>PUSHWZ Aux type
>LIBC FOpen
>SR
bcs *
phy
sta IO.CLRWRITEAUX
ldy #S.PS.pStdIn+1
sta (pPS),y
iny #S.PS.pStdOut+1
iny
sta (pPS),y
iny #S.PS.pStdErr+1
iny
sta (pPS),y
pla
ldy #S.PS.pStdIn
sta (pPS),y
iny #S.PS.pStdOut
iny
sta (pPS),y
iny #S.PS.pStdErr
iny
sta (pPS),y
lda A2osX.ActBnk
ldy #S.PS.Bnk
sta (pPS),y
sta IO.SETWRITEAUX
*--------------------------------------
Kernel.Init3C dec IRQ.InKernel Back To KERNEL
>LDYAI MSG.Init3
>LIBC PutS
jsr INIT3.HWDetect
jsr INIT3.CPU65
jsr INIT3.CPUZ80
jsr INIT3.DevMgr
jsr INIT3.IrqMgr
bcs *
jsr INIT3.TskMgr
bcs *
jsr INIT3.PwdMgr
>SS
>PUSHWI MSG.EXEC
>PUSHWI SBININITD
>PUSHBI 2
>LIBC PrintF
>SR
>SS
>PUSHWI SBININITD
>PUSHWI 0 PS Flags
>LIBC ExecL
>SR
bcs .9
>LDYAI MSG.Init3.OK
>LIBC PutS
>DEBUGOA
lda /CORE.Run-1
pha
lda #CORE.Run-1
pha
jmp RAMSW.2MAINRTS
.9 >SS
pha
>PUSHWI MSG.Init3.KO
pla
>PUSHA
>PUSHBI 1
>LIBC PrintF
>SR
bra * No need to discard Expanded CMDLINE
*--------------------------------------
INIT3.CDevs >SS
>PUSHWI FD.NULL
>PUSHWI DEV.NULL
>LIBC MKDev
>SR
bcs .9
jsr INIT3.CDevsInit
>SS
>PUSHWI FD.TTY
>PUSHWI DEV.CONSOLE
>LIBC MKDev
>SR
bcs .9
.1 jsr INIT3.CDevsNext
>SS
>PUSHWI FD.TTY
>PUSHWI DEV.TTY
>LIBC MKDev
>SR
bcs .9
lda FD.TTY+S.FD.DEV.DEVID
cmp A2osX.TTYDEVS
bne .1
clc
.9 rts
*--------------------------------------
INIT3.CDevsNext lda FD.TTY+S.FD.DEV.pDCB
clc
adc #80*24+S.DCB.TTY
sta FD.TTY+S.FD.DEV.pDCB
lda FD.TTY+S.FD.DEV.pDCB+1
adc /80*24+S.DCB.TTY
sta FD.TTY+S.FD.DEV.pDCB+1
inc FD.TTY+S.FD.DEV.DEVID
inc DEV.TTY+8
*--------------------------------------
INIT3.CDevsInit lda FD.TTY+S.FD.DEV.pDCB
sta ZPPtr1
lda FD.TTY+S.FD.DEV.pDCB+1
sta ZPPtr1+1
sta IO.CLRWRITEAUX
ldy #S.DCB.TTY-1
lda #0
.1 sta (ZPPtr1),y
dey
bne .1
lda FD.TTY+S.FD.DEV.DEVID
sta (ZPPtr1) #S.DCB.TTY.DEVID
sta IO.SETWRITEAUX
rts
*--------------------------------------
* http://www.1000bit.it/support/manuali/apple/technotes/misc/tn.misc.02.html
* https://mirrors.apple2.org.za/apple.cabi.net/FAQs.and.INFO/A2.TECH.NOTES.ETC/A2.CLASSIC.TNTS/a2misc007(1).htm
*--------------------------------------
INIT3.HWDetect >SS
>PUSHWI MSG.HW
>PUSHBI 0
>LIBC PrintF
>SR
bit IO.RROMWRAMBNK2
stz ZPPtr1 A2osX.HWT
stz ZPPtr1+1 A2osX.HWSubT
sec
jsr $FE1F ROM.IDROUTINE IIgs ?
bcs .2
lda #A2osX.HWT.IIgs
sta ZPPtr1
cpy #2
bne .1
iny
.1 sty ZPPtr1+1
bra .8
.2 lda $FBC0 ROM.ZIDBYTE
beq .4 //c
ldx #A2osX.HWT.IIe
stx ZPPtr1
cmp #$EA
beq .8 //e OLD ROMs
inc ZPPtr1+1 //e Enh ROMs
lda $FBDD
cmp #2
bne .8
inc ZPPtr1+1 //e LC card
bra .8
.4 lda #A2osX.HWT.IIc
sta ZPPtr1
lda $FBBF
sta ZPPtr1+1
.8 bit IO.RRAMWRAMBNK2
>SS
>PUSHWI MSG.HW.TypeSubT
lda ZPPtr1
sta A2osX.HWT
>PUSHA
lda ZPPtr1+1
sta A2osX.HWSubT
>PUSHA
>PUSHBI 2
>LIBC PrintF
>SR
rts
*--------------------------------------
* Out in A2osX.CPUTYPE
* $60, 6502
* $61, 65C02
* $62, 65R02
* $63, 65816
*--------------------------------------
INIT3.CPU65 >SS
>PUSHWI MSG.CPU
>PUSHBI 0
>LIBC PrintF
>SR
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
sta A2osX.CPUTYPE
tya
asl
tax
ldy MSG.CPUTYPE,x
lda MSG.CPUTYPE+1,x
>LIBC PutS
rts
*--------------------------------------
INIT3.CPUZ80 >SS
>PUSHWI MSG.Z80
>PUSHBI 0
>LIBC PrintF
>SR
ldx #Z80.300.L
.1 lda Z80.300-1,x
sta $300-1,x 0F300H for Z80
dex
bne .1
ldx #Z80.1000.L
.2 lda Z80.1000-1,x
sta $1000-1,x 00000H for Z80
dex
bne .2
stz ZPPtr1
lda #$C1
sta ZPPtr1+1
.3 sta (ZPPtr1) to Z80.....
lda $100B .....back
bmi .8
inc ZPPtr1+1
lda ZPPtr1+1
cmp #$C8
bcs .9 CS
clc
adc #$20
sta $302
bra .3
.8 lda ZPPtr1+1
and #$0F
sta A2osX.Z80SLOT
tax
lda #A2osX.S.Z80
sta A2osX.S-1,x
>SS
>PUSHWI MSG.Z80.OK
lda A2osX.Z80SLOT
>PUSHA
>PUSHBI 1
>LIBC PrintF
>SR
rts
.9 >LDYAI MSG.Z80.KO
>LIBC PutS
rts
*--------------------------------------
INIT3.DevMgr >LDYAI MSG.DEV
>LIBC PutS
* jsr INIT3.DevMgrVXD
.1 ldx $231 MLI.DEVCNT
lda $232,x MLI.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
ora #$30
sta DEV.BDEV+6 SnDy
lda $210,x MLI.DEVPTRS,x
sta FD.BDEV+S.FD.DEV.pBUS
lda $211,x MLI.DEVPTRS+1,x
sta FD.BDEV+S.FD.DEV.pBUS+1
sta IO.SETREADAUX
sta ZPPtr1+1
stz ZPPtr1 Cn00
plp
lda #0
adc #1 Make DevID 1 or 2
sta FD.BDEV+S.FD.DEV.DEVID
ora #$30
sta DEV.BDEV+8 SxDn
lda ZPPtr1+1
cmp #$FF /RAM is always $FF00
bne .2
ldx #2
jsr INIT3.DevMgrAdd
bra .8 keep slot free
.2 cmp #$D0 Disk II Driver is $D000
bne .3
lda #280
sta FD.BDEV+S.FD.DEV.SIZE
lda /280
sta FD.BDEV+S.FD.DEV.SIZE+1
ldx #0
jsr INIT3.DevMgrAdd
lda #A2osX.S.D2
bra .7 Go mark slot as USED
.3 bcs .53 > $D0, Some SP remapped DRV
cmp #$C0
bcs .4 $C0 .. $CF, in slot ROM
ldx #4
jsr INIT3.DevMgrAdd Outside ROM/LC space, User loaded BLK dev
bra .8 keep slot free
.4 ldx #BDEV.SIG-BDEV.OFS-1
.5 ldy BDEV.OFS,x Check if there is a smartport firmware
lda (ZPPtr1),y
cmp BDEV.SIG,x
bne .8 not a Disk Controller...
dex
bpl .5
ldy #7
lda (ZPPtr1),y
bne .6 $Cn07=00 : SmartPort
ldy #$ff
lda (ZPPtr1),y
clc
adc #3 Compute smartport entry point
sta FD.BDEV+S.FD.DEV.pBUS
ldx #10
jsr INIT3.DevMgrAdd
lda #A2osX.S.SP
bra .7
.53 ldx #12
jsr INIT3.DevMgrAdd Remapped SP devices....
bra .8 don't mark slot as busy
.6 ldy #$FC Size in Blk
lda (ZPPtr1),y
sta FD.BDEV+S.FD.DEV.SIZE
iny
lda (ZPPtr1),y
sta FD.BDEV+S.FD.DEV.SIZE+1
lda FD.BDEV+S.FD.DEV.BUSID 00000SSS
eor FD.BDEV+S.FD.DEV.pBUS+1 Cn
cmp #$C0
beq .70
ldx #8
jsr INIT3.DevMgrAdd Remapped BLK devices....
bra .8 don't mark slot as busy
.70 ldx #6
jsr INIT3.DevMgrAdd
lda #A2osX.S.BLK
.7 ldx FD.BDEV+S.FD.DEV.BUSID
sta A2osX.S-1,x
.8 dec $231
bmi .80
jmp .1
.80 clc
rts
*--------------------------------------
INIT3.DevMgrVXD >LDYAI VSD.PATCH
jsr .10
bcc .8
>LDYAI VED.PATCH
jsr .10
bcs .9
.8 ldy #4
lda (ZPPtr1),y
sec
sbc #1
sta .81+1
iny
lda (ZPPtr1),y
sbc #0
sta .81+2
php
sei
bit IO.RRAMWRAMBNK2
.81 ldx $FFFF SELF MODIFIED : Slot0n
bit IO.RRAMWRAMBNK1
lda #A2osX.S.VXD
sta A2osX.S-1,x
plp
.9 rts
*--------------------------------------
.10 >STYA ZPPtr1
ldy #9 10 bytes
.11 lda $BF41,y
cmp (ZPPtr1),y
bne .19
dey
bpl .11
clc
rts
.19 sec
rts
*--------------------------------------
INIT3.DevMgrAdd stx FD.BDEV+S.FD.DEV.T
stx .1+1
lda DRV.BDEVs,x
sta FD.BDEV+S.FD.DEV.pDRV
lda DRV.BDEVs+1,x
sta FD.BDEV+S.FD.DEV.pDRV+1
>SS
>PUSHWI MSG.BDEV
>PUSHWI DEV.BDEV
>PUSHW FD.BDEV+S.FD.DEV.pBUS
.1 ldx #$ff SELF MODIFIED
>PUSHW MSG.BDEVs,x
>PUSHBI 6
>LIBC PrintF
>SR
>SS
>PUSHWI FD.BDEV
>PUSHWI DEV.BDEV
>LIBC MKDev
>SR
rts
*--------------------------------------
VSD.PATCH bit IO.RRAMWRAMBNK2
jsr $D002
bit IO.RRAMWRAMBNK1
rts
*--------------------------------------
VED.PATCH bit IO.RRAMWRAMBNK2
jsr $D401
bit IO.RRAMWRAMBNK1
rts
*--------------------------------------
* Setup KernelLC $FFFE->Kernel IRQ Handler
* if irq not handled, jmp (S.IrqMgrOldFFFE)
*--------------------------------------
INIT3.IrqMgr >LDYAI MSG.IRQ
>LIBC PutS
php
sei
lda A2osX.HWT
cmp #A2osX.HWT.IIgs
bne .1
jsr IrqMgr.GS
>LDYAI MSG.IRQGS
ldx #"G"
sec
bra .8
*--------------------------------------
.1 cmp #A2osX.HWT.IIc
beq .2
jsr IrqMgr.TC
bcs .3
>LDYAI MSG.IRQTC
ldx #"C"
sec
bra .8
*--------------------------------------
.2 lda #$60
sta $5fa //c EXTINT COM1:Dont buffer but get IRQ
sta $5fb //c EXTINT COM2:Dont buffer but get IRQ
stz $5FA //c TYPHED no keyboard buffering
stz $4FF //c ROM FF: no ACIABUF
stz $4FC //c ROM 0X: no ACIABUF
.3 jsr IrqMgr.M
bcs .7
>LDYAI MSG.IRQM
ldx #"V"
sec
bra .8
*--------------------------------------
.7 sta IO.CLRWRITEAUX
jsr IrqMgr.HZ2Tick
sta IO.SETWRITEAUX
ldx #"P"
>LDYAI MSG.IRQP
clc
.8 ror A2osX.bIRQ
stx A2osX.IrqMode
>LIBC PutS
plp
clc
rts
*--------------------------------------
IrqMgr.GS .OP 65816
clc
xce go to native mode
rep #$30 long M,X
pea $000C Vertical blanking interrupt handler
pea $0000
pea $0000
>TKCALL GetVector
* bcs *
sta IO.CLRWRITEAUX
pla
sta IRQ.GSVect+2
pla
sta IRQ.GSVect
sta IO.SETWRITEAUX
pea $000C Vertical blanking interrupt handler
pea $0000
pea IRQ.GS
>TKCALL SetVector
* bcs *
pea $0002 Enable vertical blanking interrupts
>TKCALL IntSource
* bcs *
sep #$30 short M,X
sec
xce back to emulation mode
.OP 65C02
sta IO.CLRWRITEAUX
jsr IrqMgr.HZ2Tick
>LDYAI IRQ.GS
jsr IrqMgr.SetVOn
>LDYAI IRQ.GSOff
jsr IrqMgr.SetVOff
sta IO.SETWRITEAUX
rts
*--------------------------------------
IrqMgr.TC stz ZPPtr1 Try finding a TClock Card...
lda #$C1
sta ZPPtr1+1
.1 ldx #TClock.SIG-TClock.OFS-1
.2 ldy TClock.OFS,x
lda (ZPPtr1),y
cmp TClock.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 get $Cn
and #$f
tax get $0n
asl
asl
asl
asl
tay get $n0
sta IO.CLRWRITEAUX
sty IRQ.n0
lda #A2osX.S.CLK
sta A2osX.S-1,x
lda #$40+$20 Enable interrupt + 64Hz
sta $c080,y
lda #$40
sta $478,x
sta $7f8,x
lda #64
sta CORE.TickPerSec
sta CORE.TickSec
lda #11
sta CORE.TickPer10t
sta CORE.Tick10t
>LDYAI IRQ.TC
jsr IrqMgr.SetVOn
>LDYAI IRQ.TCOff
jsr IrqMgr.SetVOff
sta IO.SETWRITEAUX
clc
rts
*--------------------------------------
IrqMgr.M 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
bcc .1
* sec
rts
*--------------------------------------
.4 lda ZPPtr1+1
sta .12+2 jsr $CnXX
sta IO.CLRWRITEAUX
sta IRQ.M+2
sta IRQ.M2+2
sta IRQ.MOff1+2
and #$0f
sta IRQ.0n
asl
asl
asl
asl
sta IRQ.n0
sta IO.SETWRITEAUX
sta .11+1 ldy #Cn
bit IO.RROMWRAMBNK2 Renable ROM to allow MOUSE II firmware works properly
ldy #INITMOUSE
lda (ZPPtr1),y
sta .12+1
jsr .10
ldy #SETMOUSE
lda (ZPPtr1),y
sta .12+1
sta IO.CLRWRITEAUX
sta IRQ.MOff1+1
sta IO.SETWRITEAUX
lda #MOUSEMODx.INTVBL+MOUSEMODx.ACTIVE
jsr .10
bit IO.RRAMWRAMBNK2 Back To LC Ram
sta IO.CLRWRITEAUX
ldy #SERVEMOUSE
lda (ZPPtr1),y
sta IRQ.M+1
ldy #READMOUSE
lda (ZPPtr1),y
sta IRQ.M2+1
jsr IrqMgr.HZ2Tick
>LDYAI IRQ.M
jsr IrqMgr.SetVOn
>LDYAI IRQ.MOff
jsr IrqMgr.SetVOff
sta IO.SETWRITEAUX
clc
rts
*--------------------------------------
.10 ldx .12+2 Cn
.11 ldy #$ff SELF MODIFIED n0
.12 jmp $ffff SELF MODIFIED
*--------------------------------------
IrqMgr.HZ2Tick lda A2osX.HZ
sta CORE.TickPer10t
sta CORE.Tick10t
asl
asl
clc
adc A2osX.HZ
asl
sta CORE.TickPerSec
sta CORE.TickSec
rts
*--------------------------------------
IrqMgr.SetVOn >STYA IRQ.JSR1+1
>STYA IRQ.JSR2+1
rts
*--------------------------------------
IrqMgr.SetVOff >STYA CORE.Quit+3
IrqMgr.RTS rts
*--------------------------------------
INIT3.TskMgr >LDYAI MSG.TSK
>LIBC PutS
lda #K.ENV.SIZE
ldy #S.PS.EnvSize
jsr RAMSW.SetPSy
pha
lda /K.ENV.SIZE
iny
jsr RAMSW.SetPSy
ply
>LIBC Malloc
bcs IrqMgr.RTS
>STYA ZPPtr1
phy
ldy #S.PS.pENV+1
jsr RAMSW.SetPSy
dey
pla
jsr RAMSW.SetPSy
lda #0
sta (ZPPtr1) make sure blank!!
>SS
>PUSHWZ
>PUSHWZ
>LIBC OpenSession
>SR
bcs IrqMgr.RTS
phy
ldy #S.PS.pSession+1
jsr RAMSW.SetPSy
dey
pla
jsr RAMSW.SetPSy
>LDYAI I.CWD
>LIBC StrDup
bcs IrqMgr.RTS
phy
ldy #S.PS.pCWD+1
jsr RAMSW.SetPSy
dey
pla
jsr RAMSW.SetPSy
>SS
>PUSHWI I.ENV.BOOT
>PUSHWI SYS.BOOT
>PUSHWZ
>LIBC SetEnv
>SR
bcs .9
jsr INIT3.Hostname
>LDYAI I.ENV.HOSTNAME
>LIBC PutEnv
bcs .9
>LDYAI I.ENV.PATH
>LIBC PutEnv
bcs .9
>LDYAI I.ENV.LIB
>LIBC PutEnv
bcs .9
>LDYAI I.ENV.DRV
>LIBC PutEnv
.9 rts
*--------------------------------------
INIT3.Hostname >SS
>PUSHWI ETC.HOSTNAME
>PUSHBI O.RDONLY
>PUSHBI S.FI.T.TXT
>PUSHWZ Aux type
>LIBC FOpen
>SR
bcs .4
* >STYA pFILE
.1 >SS
>PUSHWI Buf256
>PUSHWI 254 Leave room for CRLF
>PUSHW pFILE
>LIBC FGetS
>SR
bcs .3
lda Buf256
beq .1
cmp #'#'
beq .1
ldy #$ff
.2 iny
lda Buf256,y
bne .2
cpy #16
.3 php
pha
>LDYA pFILE
>LIBC FClose
pla
plp
bcc .8
.4 ldy #$FF
.5 iny
lda LOCALHOST,y
sta Buf256,y
bne .5
.8 rts
*--------------------------------------
INIT3.PwdMgr >LDYAI MSG.PWD
>LIBC PutS
rts
>LDYAI PWD.ETCPASSWD
>LIBC LoadTxtFile
bcs .9
>STYA PWD.pUsrDB
jsr SHARED.StrLenYA
>STYA PWD.UsrDBSize
>LDYAI PWD.ETCGROUP
>LIBC LoadTxtFile
bcs .9
>STYA PWD.pGrpDB
jsr SHARED.StrLenYA
>STYA PWD.GrpDBSize
* clc
.9 rts
*--------------------------------------
Mouse.OFS .HS 05070B0CFB
Mouse.SIG .HS 38180120D6
*--------------------------------------
TClock.OFS .HS 00020406
TClock.SIG .HS 08285870
*--------------------------------------
BDEV.OFS .HS 010305
BDEV.SIG .HS 200003
*--------------------------------------
MSG.Init3 .CZ "A2osX[Stage3]:Init *** Press Ctrl-R for entering ROOT Mode ***"
MSG.DEV .AZ "Device Manager..."
MSG.BDEV .CZ " Adding Device: %s, Addr: %H, Type: %s\r\n"
MSG.BDEVs .DA MSG.BDEV.D2
.DA MSG.BDEV.RAM
.DA MSG.BDEV.USR
.DA MSG.BDEV.BLK
.DA MSG.BDEV.RBLK
.DA MSG.BDEV.SP
.DA MSG.BDEV.RSP
MSG.BDEV.D2 .AZ "Disk ]["
MSG.BDEV.RAM .AZ "/RAM Disk"
MSG.BDEV.USR .AZ "User Block"
MSG.BDEV.BLK .AZ "Generic Block"
MSG.BDEV.RBLK .AZ "Generic Block (Remapped)"
MSG.BDEV.SP .AZ "SmartPort"
MSG.BDEV.RSP .AZ "SmartPort (Remapped)"
DRV.BDEVs .DA DRV.BLK D2
.DA DRV.BLK RAM
.DA DRV.BLK USR
.DA DRV.BLK BLK
.DA DRV.BLK RBLK
.DA DRV.SP SP
.DA DRV.BLK RSP
*--------------------------------------
MSG.IRQ .AZ "Interrupt Manager..."
MSG.IRQGS .AZ " Apple IIgs VBL IRQ Activated."
MSG.IRQM .AZ " Mouse Card VBL IRQ Activated."
MSG.IRQTC .AZ " Clock Card IRQ Activated."
MSG.IRQP .AZ " Polling Mode."
MSG.TSK .AZ "Task Manager..."
MSG.PWD .AZ "Password Manager..."
MSG.EXEC .AZ "Executing %s..."
MSG.Init3.KO .CZ "Failed : [%h]\r\n"
MSG.Init3.OK .CZ "[OK]\r\nA2osX[Stage3]:Complete."
*--------------------------------------
MSG.HW .AZ "Checking Hardware..."
MSG.HW.TypeSubT .CZ "Type=%h,SubT=%h\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.Z80 .AZ "Checking Z80 CPU..."
MSG.Z80.OK .CZ "Detected In Slot %d.\r\n"
MSG.Z80.KO .AZ "Not Detected."
*--------------------------------------
RAMx .AZ "/RAMx"
I.ENV.BOOT .AZ "BOOT"
I.CWD .AZ "/"
I.ENV.PATH .AZ "PATH=/sbin/:/bin/"
I.ENV.LIB .AZ "LIB=/lib/"
I.ENV.DRV .AZ "DRV=/drv/"
SBININITD .AZ "/sbin/initd"
*--------------------------------------
FD.NULL .DA #S.FD.T.CDEV
.DA #0 HANDLER
.DA #$F BUSID
.DA #$F DEVID
.DA 0 BUSPTR
.DA NULL.DRV
.DA 0 DCBPTR
.DA 0 BUFPTR
.BS 4
*--------------------------------------
FD.TTY .DA #S.FD.T.CDEV
.DA #0 HANDLER
.DA #$F BUSID
.DA #0 DEVID
.DA 0 BUSPTR
.DA TERM.DRV
.BS 2 DCBPTR
.BS 2 BUFPTR
.BS 4
*--------------------------------------
FD.BDEV .DA #S.FD.T.BDEV
.DA #0 HANDLER
.DA #$F BUSID
.DA #0 DEVID
.BS 2 BUSPTR
.BS 2 DRVPTR
.DA 0 DCBPTR
.DA 0 BUFPTR
.DA 0 SIZE
.DA 0
*--------------------------------------
DEV.NULL .AZ "/dev/null"
DEV.CONSOLE .AZ "/dev/console"
DEV.TTY .AZ "/dev/tty0"
DEV.BDEV .AZ "/dev/s1d1"
*--------------------------------------
ETC.HOSTNAME .AZ "/etc/hostname"
LOCALHOST .AZ "localhost"
*--------------------------------------
* Z80 Reserved
*--------------------------------------
*Z80CODE .EQ $300 0F300h
*Z80STACK .EQ $3CF 0F3CFh
*--------------------------------------
Z80.300 .HS 3200E1 LD (0E100H),A Back to 6502
.HS C300F3 JP 0F300h
Z80.300.L .EQ *-Z80.300
*--------------------------------------
Z80.1000 .HS 31CFF3 START: LD SP,0F3CFh Init Stack
.HS 3EFF LD A,0FFH Set Flag
.HS 320B00 LD (FLAG),A
.HS C300F3 JP 0F300h
.HS 00 FLAG: .DB 0
Z80.1000.L .EQ *-Z80.1000
*--------------------------------------
I.ENV.HOSTNAME .AS "HOSTNAME="
Buf256 .EQ *
*--------------------------------------
MAN
SAVE usr/src/sys/kernel.s.init3
LOAD usr/src/sys/kernel.s
ASM