mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-22 00:32:44 +00:00
295 lines
4.8 KiB
Plaintext
295 lines
4.8 KiB
Plaintext
NEW
|
||
AUTO 3,1
|
||
.LIST OFF
|
||
*--------------------------------------
|
||
* ****** START OF MLI QUIT CODE ******
|
||
* Load Address :$1000-$12FF
|
||
*--------------------------------------
|
||
.PH $1000
|
||
*--------------------------------------
|
||
* Kernel Stage 1
|
||
*--------------------------------------
|
||
A2osX.QC.Start .EQ *
|
||
A2osX.QC cld
|
||
jmp A2osX.QC.Start1
|
||
|
||
A2osX.QC.BOOT .BS 64
|
||
A2osX.QC.ROOT .BS 64
|
||
|
||
A2osX.QC.Start1 sei
|
||
ldx #$FF
|
||
txs
|
||
|
||
cli
|
||
bit IO.RROMBNK1
|
||
>LDYAI A2osX.QC
|
||
>STYA ROM.PWREDUP
|
||
jsr ROM.SETPWRC
|
||
|
||
lda #$01
|
||
sta GP.MEMTABL+$17 protect ProDOS MLI Page
|
||
ldx #$16
|
||
|
||
.1 stz GP.MEMTABL,x Reset ProDOS memory bitmap
|
||
dex
|
||
bne .1
|
||
|
||
lda #$CF protect zero page, stack and page 1
|
||
sta GP.MEMTABL
|
||
|
||
lda #$8C Reset 80 col screen ($0C=FF=HOME)
|
||
jsr $C300
|
||
|
||
ldx $280 some /PATH/.SYSTEM file passed ?
|
||
beq A2osX.QC.Start2
|
||
|
||
.2 dex
|
||
lda $280,x
|
||
cmp #'/'
|
||
bne .2
|
||
|
||
stx A2osX.QC.BOOT get /PATH/ in QC.BOOT...
|
||
|
||
.3 lda $280,x
|
||
sta A2osX.QC.BOOT,x
|
||
dex
|
||
bne .3
|
||
|
||
jsr A2osX.QC.SetPFX cd to QC.BOOT...
|
||
bcs A2osX.QC.Start2
|
||
|
||
jsr A2osX.QC.Load
|
||
bcs A2osX.QC.Start2
|
||
*--------------------------------------
|
||
* $2000 = JMP $xxxx
|
||
* $2003 = $EE
|
||
* $2004 = $EE
|
||
* $2005 = BufSize
|
||
* $2006 = PathLen
|
||
* $2007... Path
|
||
*--------------------------------------
|
||
lda $2000
|
||
cmp #$4C
|
||
bne .8
|
||
|
||
lda #$EE
|
||
cmp $2003
|
||
bne .8
|
||
|
||
cmp $2004
|
||
bne .8
|
||
|
||
ldy $280
|
||
iny
|
||
lda $280,y
|
||
beq .8
|
||
|
||
cmp $2005
|
||
bcs .8
|
||
|
||
sta $2006
|
||
ldx #0
|
||
|
||
.4 iny
|
||
lda $280,y
|
||
inx
|
||
sta $2006,x
|
||
cpx $2006
|
||
bne .4
|
||
|
||
.8 jmp $2000
|
||
|
||
A2osX.QC.Start2 sec
|
||
>LDYAI MSG.INIT1
|
||
jsr A2osX.QC.PrintYA
|
||
|
||
.3 jsr A2osX.QC.SetPFX
|
||
bcc .4
|
||
|
||
>LDYAI MSG.SETPREFIXKO
|
||
clc
|
||
jsr A2osX.QC.PrintYA
|
||
>LDYAI A2osX.QC.BOOT
|
||
sec
|
||
jsr A2osX.QC.PrintYA
|
||
>DEBUG
|
||
bra .3
|
||
|
||
.4 >LDYAI MSG.SETPREFIXOK
|
||
clc
|
||
jsr A2osX.QC.PrintYA
|
||
>LDYAI A2osX.QC.BOOT
|
||
sec
|
||
jsr A2osX.QC.PrintYA
|
||
|
||
ldx A2osX.QC.BOOT
|
||
stx $280 For appending SYS/KERNEL
|
||
|
||
stz $2C0,x
|
||
|
||
.5 lda A2osX.QC.BOOT,x
|
||
sta $280,x
|
||
sta $2C0-1,x BOOT sz for KERNEL
|
||
dex
|
||
bpl .5
|
||
|
||
ldx A2osX.QC.ROOT
|
||
stz $2E0,x
|
||
|
||
.6 lda A2osX.QC.ROOT,x
|
||
sta $2E0-1,x ROOT sz for KERNEL
|
||
dex
|
||
bpl .6
|
||
|
||
lda GP.KVER
|
||
cmp #$8D
|
||
beq .7
|
||
|
||
ldy #SYSKERNEL
|
||
lda /SYSKERNEL
|
||
bra .8
|
||
|
||
.7 ldy #SYSKRNL8M
|
||
lda /SYSKRNL8M
|
||
|
||
.8 sty TmpPtr1
|
||
sta TmpPtr1+1
|
||
|
||
ldx $280
|
||
|
||
ldy #0
|
||
|
||
.9 inx
|
||
iny
|
||
lda (TmpPtr1),y
|
||
sta $280,x
|
||
tya
|
||
cmp (TmpPtr1)
|
||
bne .9
|
||
|
||
stx $280
|
||
|
||
jsr A2osX.QC.Load
|
||
bcs *
|
||
|
||
>LDYAI MSG.INIT1OK
|
||
sec
|
||
jsr A2osX.QC.PrintYA
|
||
|
||
>DEBUGOA
|
||
jmp $2000
|
||
*--------------------------------------
|
||
A2osX.QC.SetPFX jsr MLI
|
||
.DA #MLI.SETPREFIX
|
||
.DA MLISETPREFIX03
|
||
rts
|
||
*--------------------------------------
|
||
A2osX.QC.Load >LDYAI MSG.LOAD
|
||
clc
|
||
jsr A2osX.QC.PrintYA
|
||
|
||
>LDYAI $280
|
||
clc
|
||
jsr A2osX.QC.PrintYA
|
||
|
||
jsr MLI
|
||
.DA #MLI.OPEN
|
||
.DA MLIOPEN03
|
||
bcs .9
|
||
|
||
lda MLIOPEN03+5
|
||
sta MLIREAD03+1
|
||
sta MLICLOSE03+1
|
||
|
||
jsr MLI
|
||
.DA #MLI.READ
|
||
.DA MLIREAD03
|
||
|
||
php
|
||
pha
|
||
jsr MLI
|
||
.DA #MLI.CLOSE
|
||
.DA MLICLOSE03
|
||
|
||
pla
|
||
plp
|
||
bcc .8
|
||
|
||
.9 pha
|
||
>LDYAI MSG.LOAD.KO
|
||
clc
|
||
jsr A2osX.QC.PrintYA
|
||
pla
|
||
jsr ROM.PRBYTE
|
||
jsr ROM.CROUT
|
||
|
||
sec
|
||
rts
|
||
|
||
.8 >LDYAI MSG.LOAD.OK
|
||
sec
|
||
jsr A2osX.QC.PrintYA
|
||
clc
|
||
rts
|
||
*--------------------------------------
|
||
A2osX.QC.PrintYA
|
||
php
|
||
>STYA TmpPtr1
|
||
lda (TmpPtr1)
|
||
tax
|
||
beq .9
|
||
|
||
ldy #1
|
||
|
||
.1 lda (TmpPtr1),y
|
||
ora #$80
|
||
jsr ROM.COUT
|
||
iny
|
||
dex
|
||
bne .1
|
||
|
||
.9 plp
|
||
bcc .99
|
||
|
||
jsr ROM.CROUT
|
||
|
||
.99 rts
|
||
*--------------------------------------
|
||
MLISETPREFIX03 .DA #1
|
||
.DA A2osX.QC.BOOT
|
||
*--------------------------------------
|
||
MLIOPEN03 .DA #3
|
||
.DA $280
|
||
.DA $C00
|
||
.BS 1
|
||
*--------------------------------------
|
||
MLIREAD03 .DA #4
|
||
.BS 1
|
||
.DA $2000
|
||
.DA $9F00 Max .SYSTEM file len
|
||
.BS 2
|
||
*--------------------------------------
|
||
MLICLOSE03 .DA #1
|
||
.BS 1
|
||
*--------------------------------------
|
||
SYSKERNEL .PS "sys/kernel"
|
||
SYSKRNL8M .PS "sys/krnl8m"
|
||
*--------------------------------------
|
||
MSG.INIT1 .PS "A2osX[Stage1]:Init"
|
||
MSG.SETPREFIXOK .PS "Prefix Set: "
|
||
MSG.SETPREFIXKO .PS "Insert Vol:"
|
||
MSG.LOAD .PS "Loading : "
|
||
MSG.LOAD.KO .PS " Error $"
|
||
MSG.LOAD.OK .PS " OK."
|
||
MSG.INIT1OK .PS "A2osX[Stage1]:Complete."
|
||
*--------------------------------------
|
||
.LIST ON
|
||
QC.FREE .EQ $1300-*
|
||
.LIST OFF
|
||
.EP
|
||
*--------------------------------------
|
||
MAN
|
||
SAVE usr/src/a2osx.s.qc
|
||
LOAD usr/src/a2osx.s
|
||
ASM
|