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