2015-03-14 21:48:35 +00:00
|
|
|
|
PR#3
|
2015-06-03 18:30:57 +00:00
|
|
|
|
PREFIX /A2OSX.SRC
|
2015-03-14 21:48:35 +00:00
|
|
|
|
NEW
|
|
|
|
|
INC 1
|
|
|
|
|
AUTO 6
|
|
|
|
|
.LIST OFF
|
|
|
|
|
.OP 65C02
|
|
|
|
|
.OR $2000
|
2015-11-22 22:30:06 +00:00
|
|
|
|
.TF /A2OSX.BOOT/A2OSX
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
.INB INC/MACROS.I
|
|
|
|
|
.INB INC/A2OSX.I
|
|
|
|
|
.INB INC/IO.I
|
|
|
|
|
.INB INC/MONITOR.I
|
|
|
|
|
.INB INC/PRODOS.I
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
TmpPtr1 .EQ $0 main & aux ZP
|
|
|
|
|
TmpPtr2 .EQ $2 main & aux ZP
|
|
|
|
|
*--------------------------------------
|
2015-03-15 22:00:40 +00:00
|
|
|
|
A2osX.RelocAddr .EQ $1000
|
|
|
|
|
A2osX.KMLOAD .EQ $2000
|
|
|
|
|
A2osX.KMMAXLEN .EQ $4000
|
|
|
|
|
A2osX.OpenBuff1 .EQ $6000 1024 Buffer for MLIOPEN01
|
|
|
|
|
A2osX.OpenBuff2 .EQ $6400 1024 Buffer for MLIOPEN02
|
|
|
|
|
A2osX.ReadBuff .EQ $6800 512 Buffer for MLIREAD01
|
|
|
|
|
Boot.Prefix .EQ $6A00 MLI.MAXPATH
|
|
|
|
|
KM.Filename .EQ $6A80 MLI.MAXPATH
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
2015-03-15 22:00:40 +00:00
|
|
|
|
A2osX.Start .EQ *
|
|
|
|
|
.PH A2osX.RelocAddr
|
2015-06-03 18:30:57 +00:00
|
|
|
|
A2osX.Init0
|
|
|
|
|
|
|
|
|
|
ldx #$FF init 6502 stack to highest
|
2015-03-14 21:48:35 +00:00
|
|
|
|
txs
|
|
|
|
|
|
2015-03-15 22:00:40 +00:00
|
|
|
|
>LDYAI A2osX.Start
|
|
|
|
|
>STYA TmpPtr1
|
|
|
|
|
>LDYAI A2osX.RelocAddr
|
|
|
|
|
>STYA TmpPtr2
|
|
|
|
|
|
|
|
|
|
ldx #$10 reloc $2000-$2FFF to $1000-$1FFF
|
|
|
|
|
ldy #0
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2015-03-15 22:00:40 +00:00
|
|
|
|
.1 lda (TmpPtr1),y
|
|
|
|
|
sta (TmpPtr2),y
|
|
|
|
|
iny
|
|
|
|
|
bne .1
|
|
|
|
|
|
|
|
|
|
inc TmpPtr1+1
|
|
|
|
|
inc TmpPtr2+1
|
|
|
|
|
dex
|
|
|
|
|
bne .1
|
2015-06-03 18:30:57 +00:00
|
|
|
|
|
2015-03-15 22:00:40 +00:00
|
|
|
|
jmp A2osX.Init1
|
|
|
|
|
*--------------------------------------
|
2015-06-03 18:30:57 +00:00
|
|
|
|
A2osX.Init1 bit RROMBNK1
|
|
|
|
|
jsr HOME
|
2015-03-14 21:48:35 +00:00
|
|
|
|
>LDAXI MSG.STAGE0
|
|
|
|
|
jsr PrintCStrAX
|
|
|
|
|
|
|
|
|
|
>LDAXI MSG.SYSMEM
|
|
|
|
|
jsr PrintCStrAX
|
|
|
|
|
|
|
|
|
|
lda MACHID
|
2015-03-15 22:00:40 +00:00
|
|
|
|
and #MACHID.RAM
|
|
|
|
|
cmp #MACHID.RAM.128
|
2015-03-14 21:48:35 +00:00
|
|
|
|
beq .1
|
|
|
|
|
|
|
|
|
|
>LDAXI MSG.SYSMEM.KO
|
|
|
|
|
jsr PrintCStrAX
|
|
|
|
|
bra *
|
|
|
|
|
|
2015-11-10 20:52:11 +00:00
|
|
|
|
.1 lda #$8C Reset 80 col screen ($0C=FF=HOME)
|
|
|
|
|
jsr $C300
|
|
|
|
|
|
|
|
|
|
>LDAXI MSG.STAGE0
|
|
|
|
|
jsr PrintCStrAX
|
|
|
|
|
|
|
|
|
|
>LDAXI MSG.SYSMEM
|
|
|
|
|
jsr PrintCStrAX
|
|
|
|
|
|
|
|
|
|
>LDAXI MSG.SYSMEM.OK
|
2015-03-14 21:48:35 +00:00
|
|
|
|
jsr PrintCStrAX
|
|
|
|
|
|
|
|
|
|
>LDAXI MSG.CPU
|
|
|
|
|
jsr PrintCStrAX
|
2015-03-16 21:35:08 +00:00
|
|
|
|
jsr Init6502 Y = CPU type
|
2015-06-03 18:30:57 +00:00
|
|
|
|
tya
|
|
|
|
|
ora #$60
|
|
|
|
|
sta A2osX.CPUTYPE
|
|
|
|
|
|
2015-03-14 21:48:35 +00:00
|
|
|
|
lda MSG.CPUTYPEH,y
|
|
|
|
|
tax
|
|
|
|
|
lda MSG.CPUTYPEL,y
|
|
|
|
|
jsr PrintCStrAX
|
|
|
|
|
|
|
|
|
|
lda A2osX.CPUTYPE
|
|
|
|
|
bne A2osX.Prefix
|
|
|
|
|
>LDAXI MSG.CPU.KO
|
|
|
|
|
jsr PrintCStrAX
|
|
|
|
|
bra *
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
A2osX.Prefix >LDAXI MSG.BOOTPREFIX
|
|
|
|
|
jsr PrintCStrAX
|
|
|
|
|
jsr MLI
|
|
|
|
|
.DA #MLIGETPREFIX
|
|
|
|
|
.DA MLIGETPREFIX01
|
|
|
|
|
bcs *
|
|
|
|
|
ldx Boot.Prefix
|
|
|
|
|
stx A2osX.QC.B.Start+4
|
|
|
|
|
ldy #1
|
|
|
|
|
.1 lda Boot.Prefix,y
|
|
|
|
|
sta A2osX.QC.B.Start+4,y
|
|
|
|
|
ora #$80
|
|
|
|
|
jsr COUT
|
|
|
|
|
iny
|
|
|
|
|
dex
|
|
|
|
|
bne .1
|
|
|
|
|
jsr CROUT
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
A2osX.RamDrv >LDAXI MSG.RAMDRV
|
|
|
|
|
jsr PrintCStrAX
|
2015-06-03 18:30:57 +00:00
|
|
|
|
|
2015-03-14 21:48:35 +00:00
|
|
|
|
jsr DisableRamDRV
|
|
|
|
|
bcc .2
|
2015-06-03 18:30:57 +00:00
|
|
|
|
|
2015-03-14 21:48:35 +00:00
|
|
|
|
tax
|
2015-06-03 18:30:57 +00:00
|
|
|
|
bne .1
|
|
|
|
|
>LDAXI MSG.RAMDRV.KO0
|
2015-03-14 21:48:35 +00:00
|
|
|
|
jsr PrintCStrAX
|
|
|
|
|
bra A2osX.Z80
|
|
|
|
|
|
2015-06-03 18:30:57 +00:00
|
|
|
|
.1 >LDAXI MSG.RAMDRV.KO1
|
2015-03-14 21:48:35 +00:00
|
|
|
|
jsr PrintCStrAX
|
|
|
|
|
bra A2osX.Z80
|
2015-06-03 18:30:57 +00:00
|
|
|
|
|
2015-03-14 21:48:35 +00:00
|
|
|
|
.2 >LDAXI MSG.RAMDRV.OK
|
|
|
|
|
jsr PrintCStrAX
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
A2osX.Z80 >LDAXI MSG.Z80
|
|
|
|
|
jsr PrintCStrAX
|
|
|
|
|
jsr InitZ80
|
|
|
|
|
bcs .1
|
|
|
|
|
pha Push Z80Slot
|
|
|
|
|
|
|
|
|
|
>LDAXI MSG.Z80.OK
|
|
|
|
|
jsr PrintCStrAX
|
2015-03-16 21:35:08 +00:00
|
|
|
|
bra A2osX.SetupQC
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
|
|
|
|
.1 >LDAXI MSG.Z80.KO
|
|
|
|
|
jsr PrintCStrAX
|
|
|
|
|
*--------------------------------------
|
2015-03-16 21:35:08 +00:00
|
|
|
|
A2osX.SetupQC lda RRAMWRAMBNK2
|
|
|
|
|
lda RRAMWRAMBNK2
|
|
|
|
|
|
|
|
|
|
ldx #0
|
|
|
|
|
.1 lda A2osX.QC.B.Start,x
|
|
|
|
|
sta $D100,x
|
|
|
|
|
lda A2osX.QC.B.Start+$100,x
|
|
|
|
|
sta $D200,x
|
|
|
|
|
lda A2osX.GP.B.start,x
|
|
|
|
|
sta $D300,x
|
|
|
|
|
inx
|
|
|
|
|
bne .1
|
|
|
|
|
|
|
|
|
|
lda RROMBNK1
|
|
|
|
|
*--------------------------------------
|
2015-03-15 22:00:40 +00:00
|
|
|
|
A2osX.EnumKM >LDAXI MSG.KMENUM
|
|
|
|
|
jsr PrintCStrAX
|
|
|
|
|
jsr EnumKM
|
|
|
|
|
*--------------------------------------
|
2015-03-14 21:48:35 +00:00
|
|
|
|
A2osX.MLIQuit >LDAXI MSG.STAGE0OK
|
|
|
|
|
jsr PrintCStrAX
|
|
|
|
|
|
2015-12-12 10:13:14 +00:00
|
|
|
|
>DEBUGOA
|
2015-06-03 18:30:57 +00:00
|
|
|
|
|
2015-03-14 21:48:35 +00:00
|
|
|
|
jsr MLI
|
|
|
|
|
.DA #MLIQUIT
|
|
|
|
|
.DA MLIQUIT01
|
|
|
|
|
bra *
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
* Out:
|
2015-03-16 21:35:08 +00:00
|
|
|
|
* Y = 0, 6502
|
|
|
|
|
* Y = 1, 65C02
|
|
|
|
|
* Y = 2, R65C02
|
|
|
|
|
* Y = 3, 65C816
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
Init6502 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
|
2015-11-10 20:52:11 +00:00
|
|
|
|
* .OP 65R02
|
|
|
|
|
.HS F7EA For compatibility with A2osX.ASM
|
|
|
|
|
* smb 7,$EA if not Rockwell, assemble as nop nop
|
|
|
|
|
* .OP 65C02
|
2015-03-14 21:48:35 +00:00
|
|
|
|
asl $EA cs if Rockwell
|
|
|
|
|
stx $EA restore zp $EA
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
dey y=1 -> 65C02
|
|
|
|
|
|
2015-03-16 21:35:08 +00:00
|
|
|
|
.9 rts
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
DisableRamDRV php
|
|
|
|
|
sei
|
|
|
|
|
lda DEVPTRS3D2
|
|
|
|
|
cmp DEVPTRS0D1
|
|
|
|
|
bne .1
|
|
|
|
|
lda DEVPTRS3D2+1
|
|
|
|
|
cmp DEVPTRS0D1+1
|
|
|
|
|
beq .9 S3D2=NODEV, nothing to do
|
|
|
|
|
|
|
|
|
|
.1 ldx DEVCNT
|
2015-06-03 18:30:57 +00:00
|
|
|
|
|
2015-03-14 21:48:35 +00:00
|
|
|
|
.2 lda DEVLST,x LOOKING FOR $BF, $BB, $B7, $B3
|
|
|
|
|
and #$F3
|
|
|
|
|
cmp #$B3
|
|
|
|
|
beq .3
|
2015-06-03 18:30:57 +00:00
|
|
|
|
|
2015-03-14 21:48:35 +00:00
|
|
|
|
dex
|
|
|
|
|
bpl .2
|
2015-06-03 18:30:57 +00:00
|
|
|
|
|
2015-03-14 21:48:35 +00:00
|
|
|
|
plp
|
|
|
|
|
lda #1 No device found, exit with error
|
|
|
|
|
sec
|
|
|
|
|
rts
|
|
|
|
|
|
2015-06-03 18:30:57 +00:00
|
|
|
|
.3 cpx DEVCNT
|
|
|
|
|
beq .5
|
|
|
|
|
|
2015-03-14 21:48:35 +00:00
|
|
|
|
.4 lda DEVLST+1,x
|
|
|
|
|
sta DEVLST,x
|
|
|
|
|
inx
|
|
|
|
|
cpx DEVCNT
|
|
|
|
|
bne .4
|
|
|
|
|
|
2015-06-03 18:30:57 +00:00
|
|
|
|
.5 ldx DEVCNT
|
2015-03-14 21:48:35 +00:00
|
|
|
|
stz DEVLST,x
|
|
|
|
|
dec DEVCNT
|
|
|
|
|
|
|
|
|
|
lda DEVPTRS0D1
|
|
|
|
|
sta DEVPTRS3D2
|
|
|
|
|
lda DEVPTRS0D1+1
|
|
|
|
|
sta DEVPTRS3D2+1
|
|
|
|
|
plp
|
2015-06-03 18:30:57 +00:00
|
|
|
|
|
|
|
|
|
jsr MLI
|
|
|
|
|
.DA #MLIONLINE
|
|
|
|
|
.DA MLIONLINE01
|
2015-03-14 21:48:35 +00:00
|
|
|
|
clc Success!!
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
.9 plp
|
|
|
|
|
lda #0 Not detected
|
|
|
|
|
sec
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2015-11-10 20:52:11 +00:00
|
|
|
|
InitZ80 ldx #Z80Code.Size
|
2015-03-15 22:00:40 +00:00
|
|
|
|
.1 lda Z80Code.Start-1,x
|
|
|
|
|
sta $1000-1,x 00000H for Z80
|
|
|
|
|
dex
|
2015-03-14 21:48:35 +00:00
|
|
|
|
bne .1
|
|
|
|
|
|
2015-03-15 22:00:40 +00:00
|
|
|
|
stz TmpPtr1
|
|
|
|
|
lda #$C1
|
|
|
|
|
sta TmpPtr1+1
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2015-03-15 22:00:40 +00:00
|
|
|
|
.2 sta (TmpPtr1)
|
|
|
|
|
lda $100D
|
|
|
|
|
bmi .8
|
|
|
|
|
inc TmpPtr1+1
|
|
|
|
|
lda TmpPtr1+1
|
|
|
|
|
cmp #$C8
|
2015-03-14 21:48:35 +00:00
|
|
|
|
beq .9
|
2015-03-15 22:00:40 +00:00
|
|
|
|
clc
|
|
|
|
|
adc #$20
|
|
|
|
|
sta $100A
|
|
|
|
|
bra .2
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2015-03-15 22:00:40 +00:00
|
|
|
|
.8 lda TmpPtr1+1
|
|
|
|
|
and #$0F
|
|
|
|
|
sta A2osX.Z80Slot
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
.9 stz A2osX.Z80Slot
|
|
|
|
|
sec
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
EnumKM.EPB .EQ $0D
|
|
|
|
|
EnumKM.EL .EQ $27
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
EnumKM ldx #0
|
|
|
|
|
ldy Boot.Prefix
|
|
|
|
|
.1 inx
|
|
|
|
|
lda SYS,x
|
|
|
|
|
sta Boot.Prefix+1,y
|
2015-03-14 21:48:35 +00:00
|
|
|
|
iny
|
2015-03-15 22:00:40 +00:00
|
|
|
|
cpx SYS
|
|
|
|
|
bne .1
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2015-03-15 22:00:40 +00:00
|
|
|
|
sty Boot.Prefix
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2015-03-15 22:00:40 +00:00
|
|
|
|
jsr MLI
|
|
|
|
|
.DA #MLIOPEN
|
|
|
|
|
.DA MLIOPEN01
|
|
|
|
|
bcs .99
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2015-03-15 22:00:40 +00:00
|
|
|
|
lda MLIOPEN01+5
|
|
|
|
|
sta MLIREAD01+1
|
|
|
|
|
sta MLICLOSE01+1
|
|
|
|
|
|
|
|
|
|
.2 jsr MLI
|
|
|
|
|
.DA #MLIREAD
|
|
|
|
|
.DA MLIREAD01
|
|
|
|
|
bcs .98
|
|
|
|
|
|
|
|
|
|
lda #EnumKM.EPB
|
|
|
|
|
sta EnumKM.EC
|
|
|
|
|
>LDYAI A2osX.ReadBuff+4
|
|
|
|
|
>STYA EnumKM.BPTR
|
|
|
|
|
|
|
|
|
|
.3 >LDYA EnumKM.BPTR
|
|
|
|
|
>STYA TmpPtr1
|
|
|
|
|
lda (TmpPtr1)
|
|
|
|
|
and #$F0 Empty ?
|
|
|
|
|
beq .5 yes, skip
|
|
|
|
|
and #$C0 anything out of type 1,2 or 3 ?
|
|
|
|
|
bne .5 yes, skip
|
|
|
|
|
lda (TmpPtr1)
|
|
|
|
|
and #$0F
|
|
|
|
|
cmp KM.PREFIX at least enough chars for KM.*?
|
|
|
|
|
bcc .5 no, skip
|
|
|
|
|
ldy #$10 file type
|
2015-03-14 21:48:35 +00:00
|
|
|
|
lda (TmpPtr1),y
|
2015-03-15 22:00:40 +00:00
|
|
|
|
cmp #$06 'BIN'?
|
|
|
|
|
bne .5 skip
|
|
|
|
|
ldy KM.PREFIX
|
|
|
|
|
.4 lda (TmpPtr1),y
|
|
|
|
|
cmp KM.PREFIX,y
|
|
|
|
|
bne .5
|
|
|
|
|
dey
|
|
|
|
|
bne .4
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2015-03-15 22:00:40 +00:00
|
|
|
|
jsr LoadKM
|
|
|
|
|
|
|
|
|
|
.5 lda EnumKM.BPTR
|
|
|
|
|
clc
|
|
|
|
|
adc #EnumKM.EL
|
|
|
|
|
sta EnumKM.BPTR
|
|
|
|
|
bcc .6
|
|
|
|
|
inc EnumKM.BPTR+1
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2015-03-15 22:00:40 +00:00
|
|
|
|
.6 dec EnumKM.EC
|
|
|
|
|
bne .3
|
|
|
|
|
bra .2
|
|
|
|
|
|
|
|
|
|
.8 jsr MLI
|
|
|
|
|
.DA #MLICLOSE
|
|
|
|
|
.DA MLICLOSE01
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
.98 cmp #MLI.ERR.EOF
|
|
|
|
|
beq .8
|
2015-03-14 21:48:35 +00:00
|
|
|
|
pha
|
2015-03-15 22:00:40 +00:00
|
|
|
|
jsr .8
|
|
|
|
|
pla
|
|
|
|
|
.99 sec
|
|
|
|
|
rts
|
|
|
|
|
EnumKM.EC .BS 1
|
|
|
|
|
EnumKM.BPTR .BS 2
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
2015-03-15 22:00:40 +00:00
|
|
|
|
LoadKM ldx Boot.Prefix
|
|
|
|
|
.1 lda Boot.Prefix,x
|
|
|
|
|
sta KM.Filename,x
|
|
|
|
|
dex
|
|
|
|
|
bne .1
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2015-03-15 22:00:40 +00:00
|
|
|
|
ldx Boot.Prefix
|
|
|
|
|
lda (TmpPtr1)
|
|
|
|
|
and #$0F
|
|
|
|
|
tay
|
|
|
|
|
clc
|
|
|
|
|
adc Boot.Prefix
|
|
|
|
|
sta KM.Filename
|
|
|
|
|
tax
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2015-03-15 22:00:40 +00:00
|
|
|
|
.2 lda (TmpPtr1),y
|
|
|
|
|
sta KM.Filename,x
|
2015-03-14 21:48:35 +00:00
|
|
|
|
dex
|
2015-03-15 22:00:40 +00:00
|
|
|
|
dey
|
2015-03-14 21:48:35 +00:00
|
|
|
|
bne .2
|
|
|
|
|
|
2015-03-15 22:00:40 +00:00
|
|
|
|
>LDAXI MSG.KMLOAD
|
|
|
|
|
jsr PrintCStrAX
|
|
|
|
|
>LDAXI KM.Filename
|
|
|
|
|
jsr PrintPStrAX
|
|
|
|
|
jsr CROUT
|
2015-03-16 21:35:08 +00:00
|
|
|
|
|
2015-03-15 22:00:40 +00:00
|
|
|
|
jsr MLI
|
|
|
|
|
.DA #MLIOPEN
|
|
|
|
|
.DA MLIOPEN02
|
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
lda MLIOPEN02+5
|
|
|
|
|
sta MLIREAD02+1
|
|
|
|
|
sta MLICLOSE02+1
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2015-03-15 22:00:40 +00:00
|
|
|
|
jsr MLI
|
|
|
|
|
.DA #MLIREAD
|
|
|
|
|
.DA MLIREAD02
|
|
|
|
|
bcs .98
|
|
|
|
|
jsr .9
|
2015-03-16 21:35:08 +00:00
|
|
|
|
|
2015-03-15 22:00:40 +00:00
|
|
|
|
jsr A2osX.KMLOAD
|
|
|
|
|
jsr CROUT
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2015-03-15 22:00:40 +00:00
|
|
|
|
.98 pha
|
|
|
|
|
jsr .9
|
|
|
|
|
pla
|
|
|
|
|
sec
|
|
|
|
|
rts
|
2015-03-14 21:48:35 +00:00
|
|
|
|
|
2015-03-15 22:00:40 +00:00
|
|
|
|
.9 jsr MLI
|
|
|
|
|
.DA #MLICLOSE
|
|
|
|
|
.DA MLICLOSE02
|
|
|
|
|
.99 rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
.INB A2OSX.S.TOOLS
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
MSG.STAGE0 >CSTRING "A2osX[Stage0]:Init\n"
|
|
|
|
|
MSG.SYSMEM >CSTRING "Checking System Memory..."
|
|
|
|
|
MSG.SYSMEM.OK >CSTRING "128k Detected.\n"
|
|
|
|
|
MSG.SYSMEM.KO >CSTRING "A2osX Requires At Least 128k Memory.\n"
|
|
|
|
|
MSG.CPU >CSTRING "Checking CPU..."
|
|
|
|
|
MSG.CPU.KO >CSTRING "A2osX Requires At Least A 65C02 CPU.\n"
|
|
|
|
|
MSG.BOOTPREFIX >CSTRING "Boot Prefix:"
|
|
|
|
|
MSG.RAMDRV >CSTRING "Checking ProDOS RamDrive..."
|
|
|
|
|
MSG.RAMDRV.OK >CSTRING "Successfully Disabled.\n"
|
|
|
|
|
MSG.RAMDRV.KO0 >CSTRING "Not Detected.\n"
|
|
|
|
|
MSG.RAMDRV.KO1 >CSTRING "Uninstall Failed !!!\n"
|
|
|
|
|
MSG.Z80 >CSTRING "Detecting Z80 CPU..."
|
|
|
|
|
MSG.Z80.OK >CSTRING "Detected In Slot %d.\n"
|
|
|
|
|
MSG.Z80.KO >CSTRING "Not Detected.\n"
|
2015-03-15 22:00:40 +00:00
|
|
|
|
MSG.KMENUM >CSTRING "Looking For Kernel Modules...\n"
|
2015-11-10 20:52:11 +00:00
|
|
|
|
MSG.KMLOAD >CSTRING "***Loading KM : "
|
2015-03-14 21:48:35 +00:00
|
|
|
|
MSG.STAGE0OK >CSTRING "A2osX[Stage0]:Complete.\n"
|
|
|
|
|
MSG.CPUTYPEL .DA #MSG.6502
|
|
|
|
|
.DA #MSG.65C02
|
2015-11-10 20:52:11 +00:00
|
|
|
|
.DA #MSG.65R02
|
|
|
|
|
.DA #MSG.65816
|
2015-03-14 21:48:35 +00:00
|
|
|
|
MSG.CPUTYPEH .DA /MSG.6502
|
|
|
|
|
.DA /MSG.65C02
|
2015-11-10 20:52:11 +00:00
|
|
|
|
.DA /MSG.65R02
|
|
|
|
|
.DA /MSG.65816
|
2015-03-15 22:00:40 +00:00
|
|
|
|
MSG.6502 >CSTRING "6502.\n"
|
|
|
|
|
MSG.65C02 >CSTRING "65C02.\n"
|
2015-11-10 20:52:11 +00:00
|
|
|
|
MSG.65R02 >CSTRING "65R02.\n"
|
|
|
|
|
MSG.65816 >CSTRING "65816.\n"
|
2015-03-14 21:48:35 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
MLIGETPREFIX01 .DA #1
|
|
|
|
|
.DA Boot.Prefix
|
2015-06-03 18:30:57 +00:00
|
|
|
|
MLIONLINE01 .DA #2
|
|
|
|
|
.DA #0
|
|
|
|
|
.DA MLIONLINE01BUF
|
|
|
|
|
MLIONLINE01BUF .BS 256
|
2015-03-15 22:00:40 +00:00
|
|
|
|
MLIOPEN01 .DA #3 For DIR listing
|
|
|
|
|
.DA Boot.Prefix
|
|
|
|
|
.DA A2osX.OpenBuff1
|
|
|
|
|
.BS 1
|
|
|
|
|
MLIREAD01 .DA #4
|
|
|
|
|
.BS 1
|
|
|
|
|
.DA A2osX.ReadBuff Load address Dir Blocks
|
|
|
|
|
.DA $200 Maxlen of Dir Blocks (512)
|
|
|
|
|
.BS 2
|
|
|
|
|
MLICLOSE01 .DA #1
|
|
|
|
|
.BS 1
|
|
|
|
|
MLIOPEN02 .DA #3
|
|
|
|
|
.DA KM.Filename
|
|
|
|
|
.DA A2osX.OpenBuff2
|
|
|
|
|
.BS 1
|
|
|
|
|
MLIREAD02 .DA #4
|
|
|
|
|
.BS 1
|
|
|
|
|
.DA A2osX.KMLOAD Load address for KMs
|
|
|
|
|
.DA A2osX.KMMAXLEN Maxlen of KM
|
|
|
|
|
.BS 2
|
|
|
|
|
MLICLOSE02 .DA #1
|
|
|
|
|
.BS 1
|
2015-03-14 21:48:35 +00:00
|
|
|
|
MLIQUIT01 .DA #4
|
|
|
|
|
.DA #0
|
|
|
|
|
.DA 0
|
|
|
|
|
.DA #0
|
|
|
|
|
.DA 0
|
|
|
|
|
*--------------------------------------
|
2015-03-15 22:00:40 +00:00
|
|
|
|
SYS >PSTRING "SYS/"
|
|
|
|
|
KM.PREFIX >PSTRING "KM."
|
2015-03-14 21:48:35 +00:00
|
|
|
|
HEX .BS 2
|
|
|
|
|
BCD .BS 3
|
|
|
|
|
bFlag .BS 1
|
|
|
|
|
*--------------------------------------
|
2015-03-15 22:00:40 +00:00
|
|
|
|
Z80Code.Start .HS 31FFFF START: LD SP,0FFFFH 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.End .EQ *
|
|
|
|
|
Z80Code.Size .EQ Z80Code.End-Z80Code.Start
|
2015-03-16 21:35:08 +00:00
|
|
|
|
*--------------------------------------
|
2015-03-15 22:00:40 +00:00
|
|
|
|
.EP
|
|
|
|
|
A2osX.End .EQ *
|
|
|
|
|
A2osX.SIZE .EQ A2osX.End-A2osX.Start
|
2015-03-16 21:35:08 +00:00
|
|
|
|
.BS $1000-A2osX.SIZE
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
.INB A2OSX.S.QC
|
|
|
|
|
.INB A2OSX.S.GP
|
|
|
|
|
*--------------------------------------
|
2015-03-14 21:48:35 +00:00
|
|
|
|
MAN
|
|
|
|
|
SAVE A2OSX.S
|
|
|
|
|
ASM
|