A2osX/A2osX.S.GP.txt
2015-11-10 21:52:11 +01:00

154 lines
3.1 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.SRC
NEW
INC 1
AUTO 6
.LIST OFF
.OP 65C02
*--------------------------------------
* **** START OF A2osX Global Page ****
*--------------------------------------
A2osX.GP.B.start
.PH $BE00
*--------------------------------------
* A2osX.SYSCALL (AUXLC to AUXLC)
* In:
* X = SYSfnc.Index
* Y,A = free for Inline param
*--------------------------------------
A2osX.GP.Start jmp (KERNEL.SYSCALL,x)
*--------------------------------------
* LIBCALL (AUXLC to AUXLC)
* In:
* Y = LIB.ID
* X = LIBfnc.Index
* 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
phx
tya
>SYSCALL SYS.GetMemPtrA
>STYA .1+1
plx
pla
.1 jmp $FFFF
*--------------------------------------
A2osX.MLICALL1 jsr GO.MAINLC
stx .1
sta MLICALL.PARAMS
jsr MLI
.1 .BS 1
.DA MLICALL.PARAMS
jsr GO.AUXLC
rts
*--------------------------------------
A2osX.ROMCALL1 bra *
*--------------------------------------
GO.MAINLC php
clc
bra GO.SAVE.REG
GO.AUXLC php
sec
GO.SAVE.REG sta A2osX.SaveA
pla keep P in A for later
stx A2osX.SaveX
sty A2osX.SaveY
plx
ply
inx
bne .1
iny
.1 stx GO.EXIT.JMP+1
sty GO.EXIT.JMP+2
sei
ldy pStack
bcs GO.AUXLC1
GO.MAINLC1 tsx
stx A2osX.SaveSX
ldx A2osX.SaveSM
txs
stx CLRALTZP
ldx RROMBNK1
bra GO.EXIT
*--------------------------------------
GO.AUXLC1 stx SETALTZP
tsx
stx A2osX.SaveSM
ldx A2osX.SaveSX
txs
ldx RRAMWRAMBNK1
ldx RRAMWRAMBNK1
*--------------------------------------
GO.EXIT sty pStack
pha push P on stack
ldy A2osX.SaveY
ldx A2osX.SaveX
lda A2osX.SaveA
plp
GO.EXIT.JMP jmp $FFFF
*--------------------------------------
GO.Reset jsr GO.AUXLC
jmp KERNEL.COLDBOOT
*--------------------------------------
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.SaveX .BS 1
A2osX.SaveY .BS 1
*--------------------------------------
A2osX.GP.End .EQ *
A2osX.GP.SIZE .EQ A2osX.GP.END-A2osX.GP.START
.BS A2osX.GP.START+$100-*
.EP
*--------------------------------------
MAN
SAVE A2OSX.S.GP
LOAD A2OSX.S
ASM