mirror of
https://github.com/A2osX/A2osX.git
synced 2025-04-21 10:38:01 +00:00
1170 lines
20 KiB
Plaintext
1170 lines
20 KiB
Plaintext
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
|