A2osX/A2osX.S.QC.txt
2015-03-15 23:00:40 +01:00

213 lines
4.2 KiB
Plaintext
Raw 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.

PR#3
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6
.LIST OFF
.OP 65C02
*--------------------------------------
* ****** START OF MLI QUIT CODE ******
* Load Address :$1000-$11FF
* setup $BE00 Global page :
* Copy from $1200 to $BE00
*--------------------------------------
MLIOPEN00.PATH .EQ $200
MLIOPEN00.BUFF .EQ $0C00 1k Buffer for MLI open
MLIREAD00.ADDR .EQ $2000 for loading kernel.bin before moving to LC1
*--------------------------------------
A2osX.QC.B.Start
.PH $1000
*--------------------------------------
A2osX.QC.Start .EQ *
A2osX.QC cld
jmp A2osX.QC.init
A2osX.QC.Prefix .BS 32
*--------------------------------------
A2osX.QC.init bit RROMBNK1
>LDYAI A2osX.QC
>STYA POWERUP
jsr SETPWRC
ldx #$17
.1 stz MEMTABL,x Reset ProDOS memory bitmap
dex
bpl .1
lda #$CF protect zero page, stack and page 1
sta MEMTABL
lda #$03
sta MEMTABL+$17 protect ProDOS & A2osX global page
lda #$8C Reset 80 col screen ($0C=FF=HOME)
jsr $C300
>LDAXI MSG.STAGE1
jsr A2osX.QC.PrintAX
ldx #0
.2 lda $1200,x Setup Global Page
sta $BE00,x
inx
bne .2
.3 jsr MLI
.DA #MLISETPREFIX
.DA MLISETPREFIX00
bcc .4
>LDAXI MSG.SETPREFIXKO
jsr A2osX.QC.PrintAX
>LDAXI A2osX.QC.Prefix
jsr A2osX.QC.PrintAX
>DEBUG
bra .3
.4 >LDAXI MSG.SETPREFIXOK
jsr A2osX.QC.PrintAX
>LDAXI MSG.KLOADING
jsr A2osX.QC.PrintAX
jsr A2osX.QC.KLoad
bcs .9
>LDAXI MSG.KLOADING.OK
jsr A2osX.QC.PrintAX
>LDYAI GO.Reset
>STYA POWERUP
jsr SETPWRC
php
pla
sei
tsx
stx A2osX.SaveSM
stx SETALTZP
ldx A2osX.SaveSX
txs
bit RRAMWRAMBNK1
bit RRAMWRAMBNK1
pha
plp
jmp $E000
.9 >LDAXI MSG.KLOADING.KO
jsr A2osX.QC.PrintAX
bra *
*--------------------------------------
A2osX.QC.KLoad ldx A2osX.QC.Prefix
.1 lda A2osX.QC.Prefix,x
sta MLIOPEN00.PATH,x
dex
bne .1
ldx A2osX.QC.Prefix
ldy #0
.2 lda SYSKERNEL+1,y
sta MLIOPEN00.PATH+1,x
inx
iny
cpy SYSKERNEL
bne .2
stx MLIOPEN00.PATH
>LDAXI MLIOPEN00.PATH
jsr A2osX.QC.PrintAX
jsr MLI
.DA #MLIOPEN
.DA MLIOPEN00
bcs .9
lda MLIOPEN00+5
sta MLIREAD00+1
sta MLICLOSE00+1
jsr MLI
.DA #MLIREAD
.DA MLIREAD00
bcs .9
jsr MLI
.DA #MLICLOSE
.DA MLICLOSE00
bcs .9
php
sei
sta SETALTZP
lda RRAMWRAMBNK1
lda RRAMWRAMBNK1
>LDYAI MLIREAD00.ADDR+$1F00
>STYA TmpPtr1
>LDYAI $E000+$1F00
>STYA TmpPtr2
ldx #$20
ldy #$F9 do not trash NMI,BRK,IRQ Vectors
.3 lda (TmpPtr1),y
sta (TmpPtr2),y
dey
cpy #$FF
bne .3
dec TmpPtr1+1
dec TmpPtr2+1
dex
bne .3
lda RROMBNK1
sta CLRALTZP
plp
clc
.9 rts
*--------------------------------------
A2osX.QC.PrintAX
>STAX TmpPtr1
lda (TmpPtr1)
tax
beq .9
ldy #1
.1 lda (TmpPtr1),y
ora #$80
jsr COUT
iny
dex
bne .1
.9 jsr CROUT
rts
*--------------------------------------
MLISETPREFIX00 .DA #1
.DA A2osX.QC.Prefix
MLIOPEN00 .DA #3
.DA MLIOPEN00.PATH
.DA MLIOPEN00.BUFF
.BS 1
MLIREAD00 .DA #4
.BS 1
.DA MLIREAD00.ADDR
.DA $1FFA
.BS 2
MLICLOSE00 .DA #1
.BS 1
*--------------------------------------
SYSKERNEL >PSTRING "SYS/KERNEL"
*--------------------------------------
MSG.STAGE1 >PSTRING "A2osX[Stage1]:Init"
MSG.SETPREFIXOK >PSTRING "Set Prefix OK"
MSG.SETPREFIXKO >PSTRING "Insert Vol:"
MSG.KLOADING >PSTRING "Loading Kernel..."
MSG.KLOADING.OK >PSTRING "OK"
MSG.KLOADING.KO >PSTRING "Error While Loading Kernel."
MSG.STAGE1OK >PSTRING "A2osX[Stage1]:Complete."
*--------------------------------------
A2osX.QC.END .EQ *
A2osX.QC.SIZE .EQ A2osX.QC.END-A2osX.QC.START
.BS $200-A2osX.QC.SIZE
.EP
*--------------------------------------
MAN
SAVE A2OSX.S.QC
LOAD A2OSX.S
ASM