mirror of
https://github.com/A2osX/A2osX.git
synced 2024-09-29 09:55:53 +00:00
704a72cee7
Finally FIX the KM.APPLTALK module crashing at startup, Fix in SYS Driver messing with MOUSE IRQ, fix VSDRIVE timout
273 lines
6.1 KiB
Plaintext
273 lines
6.1 KiB
Plaintext
PR#3
|
||
PREFIX /A2OSX.BUILD
|
||
LOMEM $A00
|
||
INC 1
|
||
AUTO 6
|
||
*--------------------------------------
|
||
* SYSCALL (AUXLC to AUXLC)
|
||
* Used by user & kernel for inter bank Calls
|
||
* In:
|
||
* X = SYSfnc.Index
|
||
* Y,A = free for Inline param
|
||
*--------------------------------------
|
||
jmp GP.SysCall
|
||
*--------------------------------------
|
||
* LIBCALL (AUXLC to AUXLC)
|
||
* Used by user
|
||
* In:
|
||
* Y = LIB.ID
|
||
* X = LIBfnc.Index
|
||
* A = free for Inline param
|
||
*--------------------------------------
|
||
jmp GP.LibCall
|
||
*--------------------------------------
|
||
* AppleTalk MLICALL (AUXLC to MAINLC)
|
||
* Used by user
|
||
* In:
|
||
* Y,A = Params
|
||
*--------------------------------------
|
||
jmp GP.AtkCall
|
||
*--------------------------------------
|
||
* MLICALL (AUXLC to MAINLC)
|
||
* Used by Kernel
|
||
* In:
|
||
* X = MLI Function
|
||
* A = Param Count
|
||
*--------------------------------------
|
||
jmp GP.ROMCall
|
||
*--------------------------------------
|
||
* BADCALL
|
||
*--------------------------------------
|
||
lda #MLI.E.BADCALL
|
||
sec
|
||
rts
|
||
*--------------------------------------
|
||
jmp (pDev) pDevJmp
|
||
*--------------------------------------
|
||
* *** MUST BE REINTRANT ***
|
||
*--------------------------------------
|
||
GP.SysCall bit K.SYSCALL.BANK,x
|
||
bpl .8 in $E000, no BNK change
|
||
|
||
sta .7+1 save A (Func Arg)
|
||
|
||
lda K.SYSCALL.BANK,x Get Target BNK
|
||
|
||
cmp $D000 #RRAMWRAMBNK1 or #RRAMWRAMBNK2
|
||
beq .7 same as actual BNK...go restore A and JMP
|
||
|
||
stx .6+1 save X (Func ID)
|
||
|
||
tax set Target BNK in x
|
||
lda $D000 get source BNK
|
||
bit $C000,x switch to Target BNK
|
||
bit $C000,x
|
||
pha
|
||
|
||
jsr .6 go to kernel.....
|
||
|
||
stx .5+1 save X
|
||
plx get back Source BNK
|
||
bit $C000,x
|
||
bit $C000,x
|
||
.5 ldx #$FF Self Modified
|
||
rts Unmodified Carry
|
||
|
||
.6 ldx #$FF Self Modified
|
||
.7 lda #$FF Self Modified
|
||
.8 jmp (K.SYSCALL.JMP,x)
|
||
*--------------------------------------
|
||
GP.LibCall pha No need to save X, K.GetMemPtr.A will leave it unmodified
|
||
tya Get LIB hMem in A
|
||
jsr K.GetMemPtr.A Get LIB Code Segment (MemMgr in $E000, no BNK change)
|
||
>STYA .1+1
|
||
pla
|
||
.1 jmp *
|
||
*--------------------------------------
|
||
GP.AtkCall >STYA .1
|
||
jsr GO.ProDOS
|
||
jsr MLI
|
||
.DA #MLIATALK
|
||
.1 .DA *
|
||
jsr GO.A2osX
|
||
rts
|
||
*--------------------------------------
|
||
GP.ROMCall phx
|
||
ldx $D000
|
||
stx .8+1
|
||
|
||
bit RROMBNK1
|
||
|
||
plx
|
||
jsr .1
|
||
|
||
.8 ldx #$ff
|
||
bit $C000,x
|
||
bit $C000,x
|
||
rts
|
||
|
||
.1 jmp (.2,x)
|
||
|
||
* http://www.txbobsc.com/scsc/scdocumentor/E7A0.html
|
||
|
||
.2 .DA $E7AA FSUBT
|
||
.DA $E7C1 FADDT
|
||
.DA $E82E NORMALIZE.FAC.2 (L->F)
|
||
.DA $E941 LOG
|
||
.DA $E987 FMULTT.1
|
||
.DA $E9E7 LOAD.ARG.FROM.INDEX
|
||
.DA $EA6B FDIVT+2
|
||
.DA $EAFD LOAD.FAC.FROM.INDEX
|
||
|
||
.DA $EB27 SETFOR (GETFAC)
|
||
.DA $EBB2 FCOMP
|
||
.DA $EBF2 QINT (F->L)
|
||
.DA $EC4A FIN StrToF
|
||
.DA $ED36 FOUT.1 PrintF
|
||
.DA $EE8D SQR
|
||
.DA $EE97 FPWRT
|
||
.DA $EF09 EXP
|
||
|
||
.DA $EFEA COS
|
||
.DA $EFF1 SIN
|
||
.DA $F03A TAN
|
||
.DA $F09E ATN
|
||
*--------------------------------------
|
||
GP.MLICall stx .1
|
||
sta K.MLI.PARAMS
|
||
jsr GO.ProDOS
|
||
jsr MLI
|
||
.1 .BS 1
|
||
.DA K.MLI.PARAMS
|
||
jsr GO.A2osX
|
||
rts
|
||
*--------------------------------------
|
||
GO.DiskII.RW jsr GO.ProDOS
|
||
stx $42
|
||
sta $43
|
||
|
||
ldy #3
|
||
|
||
GO.DiskII.RW.1 lda $ffff,y Self Modified
|
||
sta $44,y
|
||
dey
|
||
bpl GO.DiskII.RW.1
|
||
|
||
jsr $D000
|
||
cli
|
||
jsr GO.A2osX
|
||
rts
|
||
*--------------------------------------
|
||
GO.ProDOS pha
|
||
lda $D000 We re coming from AUXLC, saving bank...
|
||
sta GO.A2osX.BNK+1
|
||
pla
|
||
php
|
||
clc
|
||
.HS 2C bit abs
|
||
|
||
GO.A2osX php
|
||
sec
|
||
|
||
sei
|
||
|
||
sta GO.EXIT.SaveA+1
|
||
stx GO.EXIT.SaveX+1
|
||
sty GO.EXIT.SaveY+1
|
||
|
||
pla Restore P in A for later
|
||
|
||
plx Get PC and add 1 for return
|
||
ply
|
||
inx
|
||
bne .1
|
||
iny
|
||
|
||
.1 stx GO.EXIT.JMP+1
|
||
sty GO.EXIT.JMP+2
|
||
|
||
bcs GO.A2osX.BNK if CS, go AUXLC
|
||
|
||
bit RRAMWRAMBNK1 Go MAINLC (ProDOS), always BNK1
|
||
bit RRAMWRAMBNK1
|
||
|
||
tsx
|
||
stx A2osX.SaveSX
|
||
ldx A2osX.SaveSM
|
||
txs
|
||
sta CLRALTZP
|
||
bra GO.EXIT
|
||
|
||
GO.A2osX.BNK ldx #RRAMWRAMBNK1 Self Modified, initialized to BNK1 for INIT3
|
||
|
||
bit $C000,x
|
||
bit $C000,x
|
||
|
||
sta SETALTZP
|
||
tsx
|
||
stx A2osX.SaveSM
|
||
ldx A2osX.SaveSX
|
||
txs
|
||
*--------------------------------------
|
||
GO.EXIT pha push P on stack
|
||
GO.EXIT.SaveY ldy #$ff
|
||
GO.EXIT.SaveX ldx #$ff
|
||
GO.EXIT.SaveA lda #$ff
|
||
plp
|
||
GO.EXIT.JMP jmp $FFFF Self Modified
|
||
*--------------------------------------
|
||
* Called for ProDOS IRQ Manager (LCBNK1)
|
||
* A,X,Y, $FA->$FF Already Saved
|
||
* Main RAM,ZP/LC selected
|
||
* must begin with CLD
|
||
* must exit with RTS
|
||
* - CC if IRQ cleared, CS if NOT
|
||
*--------------------------------------
|
||
GP.IrqH cld
|
||
lda RDALTZP
|
||
sta .2+1
|
||
|
||
bmi .1 we are already in AuxZP/LC
|
||
|
||
sta SETALTZP coming from MainLC, switch to aux
|
||
tsx
|
||
stx A2osX.SaveSM
|
||
ldx A2osX.SaveSX
|
||
txs
|
||
|
||
.1 jsr K.IrqH
|
||
|
||
.2 lda #$ff get back ZP status when called
|
||
bmi .3 we were coming from AuxZP/LC
|
||
|
||
tsx go back to Main
|
||
stx A2osX.SaveSX
|
||
ldx A2osX.SaveSM
|
||
txs
|
||
sta CLRALTZP
|
||
|
||
.3 rts
|
||
*--------------------------------------
|
||
*GO.Reset jsr GO.A2osX
|
||
* jmp CORE.Run
|
||
*--------------------------------------
|
||
*BrkHandler bra *
|
||
*--------------------------------------
|
||
.BS $BEE0-*
|
||
*--------------------------------------
|
||
* $BEE0->$BEEF : Public Variables
|
||
*--------------------------------------
|
||
.BS 16
|
||
*--------------------------------------
|
||
* $BEF0->$BEFF : Kernel Config Block
|
||
*--------------------------------------
|
||
.DA #6 60hz
|
||
.BS 7
|
||
.DA #0 ChRoot Disabled
|
||
.BS 7 All Slots marked as "Free"
|
||
*--------------------------------------
|
||
MAN
|
||
SAVE /A2OSX.SRC/SYS/KERNEL.S.GP
|
||
LOAD /A2OSX.SRC/SYS/KERNEL.S
|
||
ASM
|