mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-25 20:33:13 +00:00
Complete Rewrite #4 : keep it simple!!!
This commit is contained in:
parent
a95b687065
commit
a5ab6632dd
@ -11,23 +11,35 @@ AUTO 6
|
|||||||
A2osX.GP.B.start
|
A2osX.GP.B.start
|
||||||
.PH $BE00
|
.PH $BE00
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
A2osX.GP.Start bra A2osX.SYSCALL1
|
* A2osX.SYSCALL (AUXLC to AUXLC)
|
||||||
bra A2osX.LIBCALL1
|
|
||||||
bra A2osX.SLEEP1
|
|
||||||
bra A2osX.MLICALL1
|
|
||||||
*--------------------------------------
|
|
||||||
* A2osX.SYSCALL (MAINLC to AUXLC)
|
|
||||||
* In:
|
* In:
|
||||||
* X = SYSfnc.Index
|
* X = SYSfnc.Index
|
||||||
* Y,A = free for Inline param
|
* Y,A = free for Inline param
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
A2osX.SYSCALL1 jmp KERNEL.SYSCALL
|
A2osX.GP.Start jmp (KERNEL.SYSCALL,x)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* LIBCALL (MAINLC to MAINLC)
|
* LIBCALL (AUXLC to AUXLC)
|
||||||
* In:
|
* In:
|
||||||
* Y = LIB.ID
|
* Y = LIB.ID
|
||||||
* X = LIBfnc.Index
|
* X = LIBfnc.Index
|
||||||
* A = free for Inline param
|
* A = free for Inline param
|
||||||
|
*--------------------------------------
|
||||||
|
jmp A2osX.LIBCALL1
|
||||||
|
*--------------------------------------
|
||||||
|
* Kernel.MLICALL (AUXLC to MAINLC)
|
||||||
|
* In:
|
||||||
|
* X = MLI Function
|
||||||
|
* A = Param Count
|
||||||
|
*--------------------------------------
|
||||||
|
jmp A2osX.MLICALL1
|
||||||
|
*--------------------------------------
|
||||||
|
jmp A2osX.ROMCALL1
|
||||||
|
.BS $BE10-*
|
||||||
|
*--------------------------------------
|
||||||
|
jmp (pDev) pDevJmp
|
||||||
|
jmp (pCode) pCodeJmp
|
||||||
|
jmp (pLib) pLibJmp
|
||||||
|
.BS $BE20-*
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
A2osX.LIBCALL1 pha
|
A2osX.LIBCALL1 pha
|
||||||
phx
|
phx
|
||||||
@ -38,35 +50,6 @@ A2osX.LIBCALL1 pha
|
|||||||
pla
|
pla
|
||||||
.1 jmp $FFFF
|
.1 jmp $FFFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* SLEEP (MAINLC to AUXLC)
|
|
||||||
* In:
|
|
||||||
*--------------------------------------
|
|
||||||
A2osX.SLEEP1 ldy #S.PS.hCS
|
|
||||||
lda (pPs),y
|
|
||||||
>SYSCALL SYS.GetMemPtrA
|
|
||||||
>STYA A2osX.SaveCS
|
|
||||||
ldy #S.PS.PC
|
|
||||||
pla get PC LO
|
|
||||||
plx get PC HI
|
|
||||||
inc Advance PC one Byte
|
|
||||||
bne .1
|
|
||||||
inx
|
|
||||||
|
|
||||||
.1 sec
|
|
||||||
sbc A2osX.SaveCS
|
|
||||||
sta (pPs),y
|
|
||||||
iny
|
|
||||||
txa
|
|
||||||
sbc A2osX.SaveCS+1
|
|
||||||
sta (pPs),y
|
|
||||||
clc No error,
|
|
||||||
rts back to Kernel
|
|
||||||
*--------------------------------------
|
|
||||||
* Kernel.MLICALL (AUXLC to MAINLC)
|
|
||||||
* In:
|
|
||||||
* X = MLI Function
|
|
||||||
* A = Param Count
|
|
||||||
*--------------------------------------
|
|
||||||
A2osX.MLICALL1 jsr GO.MAINLC
|
A2osX.MLICALL1 jsr GO.MAINLC
|
||||||
stx .1
|
stx .1
|
||||||
sta MLICALL.PARAMS
|
sta MLICALL.PARAMS
|
||||||
@ -76,6 +59,8 @@ A2osX.MLICALL1 jsr GO.MAINLC
|
|||||||
jsr GO.AUXLC
|
jsr GO.AUXLC
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
A2osX.ROMCALL1 bra *
|
||||||
|
*--------------------------------------
|
||||||
GO.MAINLC php
|
GO.MAINLC php
|
||||||
clc
|
clc
|
||||||
bra GO.SAVE.REG
|
bra GO.SAVE.REG
|
||||||
@ -125,7 +110,34 @@ GO.EXIT.JMP jmp $FFFF
|
|||||||
GO.Reset jsr GO.AUXLC
|
GO.Reset jsr GO.AUXLC
|
||||||
jmp KERNEL.COLDBOOT
|
jmp KERNEL.COLDBOOT
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
A2osX.SaveCS .BS 2
|
S.PRBYTE pha
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
ora #$30
|
||||||
|
cmp #$3A
|
||||||
|
bcc .1
|
||||||
|
adc #6
|
||||||
|
.1 jsr S.COUT
|
||||||
|
pla
|
||||||
|
and #$0F
|
||||||
|
ora #$30
|
||||||
|
cmp #$3A
|
||||||
|
bcc S.COUT
|
||||||
|
adc #6
|
||||||
|
bra S.COUT
|
||||||
|
*--------------------------------------
|
||||||
|
S.CROUT lda #13
|
||||||
|
*--------------------------------------
|
||||||
|
S.COUT phx
|
||||||
|
phy
|
||||||
|
ldx #DEVMGR.COUT
|
||||||
|
jsr pDevJmp
|
||||||
|
ply
|
||||||
|
plx
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
A2osX.SaveA .BS 1
|
A2osX.SaveA .BS 1
|
||||||
A2osX.SaveX .BS 1
|
A2osX.SaveX .BS 1
|
||||||
A2osX.SaveY .BS 1
|
A2osX.SaveY .BS 1
|
||||||
|
43
A2osX.S.txt
43
A2osX.S.txt
@ -10,8 +10,6 @@ AUTO 6
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB INC/MACROS.I
|
.INB INC/MACROS.I
|
||||||
.INB INC/A2OSX.I
|
.INB INC/A2OSX.I
|
||||||
.INB INC/A2OSX.API.I
|
|
||||||
.INB INC/KERNEL.I
|
|
||||||
.INB INC/IO.I
|
.INB INC/IO.I
|
||||||
.INB INC/MONITOR.I
|
.INB INC/MONITOR.I
|
||||||
.INB INC/PRODOS.I
|
.INB INC/PRODOS.I
|
||||||
@ -19,7 +17,6 @@ AUTO 6
|
|||||||
TmpPtr1 .EQ $0 main & aux ZP
|
TmpPtr1 .EQ $0 main & aux ZP
|
||||||
TmpPtr2 .EQ $2 main & aux ZP
|
TmpPtr2 .EQ $2 main & aux ZP
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
A2osX.Z80Stack .EQ $0F00 $0fff=0ffffh
|
|
||||||
A2osX.RelocAddr .EQ $1000
|
A2osX.RelocAddr .EQ $1000
|
||||||
A2osX.KMLOAD .EQ $2000
|
A2osX.KMLOAD .EQ $2000
|
||||||
A2osX.KMMAXLEN .EQ $4000
|
A2osX.KMMAXLEN .EQ $4000
|
||||||
@ -29,9 +26,6 @@ A2osX.ReadBuff .EQ $6800 512 Buffer for MLIREAD01
|
|||||||
Boot.Prefix .EQ $6A00 MLI.MAXPATH
|
Boot.Prefix .EQ $6A00 MLI.MAXPATH
|
||||||
KM.Filename .EQ $6A80 MLI.MAXPATH
|
KM.Filename .EQ $6A80 MLI.MAXPATH
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Z80STACK .EQ $0FFF (0FFFFh) Down to $0F00
|
|
||||||
Z80JMP .EQ $1000
|
|
||||||
*--------------------------------------
|
|
||||||
A2osX.Start .EQ *
|
A2osX.Start .EQ *
|
||||||
.PH A2osX.RelocAddr
|
.PH A2osX.RelocAddr
|
||||||
A2osX.Init0
|
A2osX.Init0
|
||||||
@ -76,7 +70,16 @@ A2osX.Init1 bit RROMBNK1
|
|||||||
jsr PrintCStrAX
|
jsr PrintCStrAX
|
||||||
bra *
|
bra *
|
||||||
|
|
||||||
.1 >LDAXI MSG.SYSMEM.OK
|
.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
|
||||||
jsr PrintCStrAX
|
jsr PrintCStrAX
|
||||||
|
|
||||||
>LDAXI MSG.CPU
|
>LDAXI MSG.CPU
|
||||||
@ -200,9 +203,10 @@ Init6502 ldy #0 Test 6502 BCD bug
|
|||||||
dey y=2 -> R65C02
|
dey y=2 -> R65C02
|
||||||
ldx $EA save zp $EA
|
ldx $EA save zp $EA
|
||||||
stz $EA store 0 in $EA
|
stz $EA store 0 in $EA
|
||||||
.OP 65R02
|
* .OP 65R02
|
||||||
smb 7,$EA if not Rockwell, assemble as nop nop
|
.HS F7EA For compatibility with A2osX.ASM
|
||||||
.OP 65C02
|
* smb 7,$EA if not Rockwell, assemble as nop nop
|
||||||
|
* .OP 65C02
|
||||||
asl $EA cs if Rockwell
|
asl $EA cs if Rockwell
|
||||||
stx $EA restore zp $EA
|
stx $EA restore zp $EA
|
||||||
bcs .9
|
bcs .9
|
||||||
@ -265,10 +269,7 @@ DisableRamDRV php
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
InitZ80 sec
|
InitZ80 ldx #Z80Code.Size
|
||||||
rts
|
|
||||||
|
|
||||||
ldx #Z80Code.Size
|
|
||||||
.1 lda Z80Code.Start-1,x
|
.1 lda Z80Code.Start-1,x
|
||||||
sta $1000-1,x 00000H for Z80
|
sta $1000-1,x 00000H for Z80
|
||||||
dex
|
dex
|
||||||
@ -456,20 +457,20 @@ MSG.Z80 >CSTRING "Detecting Z80 CPU..."
|
|||||||
MSG.Z80.OK >CSTRING "Detected In Slot %d.\n"
|
MSG.Z80.OK >CSTRING "Detected In Slot %d.\n"
|
||||||
MSG.Z80.KO >CSTRING "Not Detected.\n"
|
MSG.Z80.KO >CSTRING "Not Detected.\n"
|
||||||
MSG.KMENUM >CSTRING "Looking For Kernel Modules...\n"
|
MSG.KMENUM >CSTRING "Looking For Kernel Modules...\n"
|
||||||
MSG.KMLOAD >CSTRING "\nLoading KM : "
|
MSG.KMLOAD >CSTRING "***Loading KM : "
|
||||||
MSG.STAGE0OK >CSTRING "A2osX[Stage0]:Complete.\n"
|
MSG.STAGE0OK >CSTRING "A2osX[Stage0]:Complete.\n"
|
||||||
MSG.CPUTYPEL .DA #MSG.6502
|
MSG.CPUTYPEL .DA #MSG.6502
|
||||||
.DA #MSG.65C02
|
.DA #MSG.65C02
|
||||||
.DA #MSG.R65C02
|
.DA #MSG.65R02
|
||||||
.DA #MSG.65C816
|
.DA #MSG.65816
|
||||||
MSG.CPUTYPEH .DA /MSG.6502
|
MSG.CPUTYPEH .DA /MSG.6502
|
||||||
.DA /MSG.65C02
|
.DA /MSG.65C02
|
||||||
.DA /MSG.R65C02
|
.DA /MSG.65R02
|
||||||
.DA /MSG.65C816
|
.DA /MSG.65816
|
||||||
MSG.6502 >CSTRING "6502.\n"
|
MSG.6502 >CSTRING "6502.\n"
|
||||||
MSG.65C02 >CSTRING "65C02.\n"
|
MSG.65C02 >CSTRING "65C02.\n"
|
||||||
MSG.R65C02 >CSTRING "R65C02.\n"
|
MSG.65R02 >CSTRING "65R02.\n"
|
||||||
MSG.65C816 >CSTRING "65C816.\n"
|
MSG.65816 >CSTRING "65816.\n"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MLIGETPREFIX01 .DA #1
|
MLIGETPREFIX01 .DA #1
|
||||||
.DA Boot.Prefix
|
.DA Boot.Prefix
|
||||||
|
Loading…
Reference in New Issue
Block a user