A2osX/ProDOS.FX/ProDOS.S.GP.txt

169 lines
5.6 KiB
Plaintext
Raw Normal View History

2019-10-16 06:09:13 +00:00
NEW
AUTO 3,1
2019-10-19 18:35:30 +00:00
*--------------------------------------
H2E00 jmp GP.MLIENTRY $2E00-2EFF moved to $BF00
2019-10-16 06:09:13 +00:00
jspare jmp * will be changed to point to dispatcher.
clockv rts changed to jmp ($4C) if clock present.
.DA tclk_in clock routine entry address.
GP.P8errv jmp XDOS.syserr error reporting hook.
sysdeath jmp sysdeath1 system failure hook.
p8error .DA #0
drivertbl1 .DA nodevice
.DA nodevice
.DA nodevice
.DA nodevice
.DA nodevice
.DA nodevice
.DA nodevice
.DA nodevice
drivertbl2 .DA nodevice
.DA nodevice
.DA nodevice
.DA nodevice
.DA nodevice
.DA nodevice
.DA nodevice
.DA nodevice
.DA #0 devnum
numdevs .DA #$ff count (-1) active devices
devlist .HS 00000000000000 up to 14 units may be active
.HS 00000000000000
.DA #0
2019-10-19 18:35:30 +00:00
*--------------------------------------
2019-10-16 06:09:13 +00:00
.AS "(C)APPLE "
2019-10-19 18:35:30 +00:00
*--------------------------------------
GP.MLIENTRY php
2019-10-16 06:09:13 +00:00
sei
2019-10-19 18:35:30 +00:00
jmp GP.MLICONT
*--------------------------------------
*aftirq sta RRAMWRAMBNK1 read/write RAM bank 1
* jmp fix45 restore $45 after interrupt in LC
*oldacc .DA #0
*afbank .HS 00
*--------------------------------------
.LIST ON
GP.FREE1 .EQ $BF58-*
.LIST OFF
.BS GP.FREE1
*--------------------------------------
2019-10-16 06:09:13 +00:00
* memory map of lower 48k. each bit represents 1 page.
* protected pages = 1, unprotected = 0
2019-10-19 18:35:30 +00:00
*--------------------------------------
2019-10-16 06:09:13 +00:00
memmap .HS C000000000000000
.HS 0000000000000000
.HS 0000000000000001
2019-10-19 18:35:30 +00:00
*--------------------------------------
2019-10-16 06:09:13 +00:00
* table of buffer addresses for currently open files.
* these can only be changed thru the mli call setbuf.
2019-10-19 18:35:30 +00:00
*--------------------------------------
2019-10-16 06:09:13 +00:00
buftbl .HS 0000 file #1
.HS 0000 file #2
.HS 0000 file #3
.HS 0000 file #4
.HS 0000 file #5
.HS 0000 file #6
.HS 0000 file #7
.HS 0000 file #8
2019-10-19 18:35:30 +00:00
*--------------------------------------
2019-10-16 06:09:13 +00:00
* table of interrupt vectors. these can only be changed
* by the mli call allocate_interrupt. values of the registers
* at the time of the most recent interrupt are stored here along
* with the address interrupted.
2019-10-19 18:35:30 +00:00
*--------------------------------------
2019-10-16 06:09:13 +00:00
inttbl .HS 0000 int #1
.HS 0000 int #2
.HS 0000 int #3
.HS 0000 int #4
2019-10-19 18:35:30 +00:00
*--------------------------------------
*p8areg .DA #0 A register savearea
*p8xreg .DA #0 X register savearea
*p8yreg .DA #0 Y register savearea
*p8sreg .DA #0 S register savearea
*p8preg .DA #0 P register savearea
*bankid .DA #1 bank ID byte (ROM/RAM)
*intadr .HS 0000 interrupt return address
*--------------------------------------
.BS 8
*--------------------------------------
2019-10-16 06:09:13 +00:00
p8date .HS 0000 bits 15-9=yr, 8-5=mo, 4-0=day
p8time .HS 0000 bits 12-8=hr, 5-0=min, low-hi format
flevel .DA #0 current file level
bubit .DA #0 backup bit disable, setfileinfo only
spare1 .DA #0 used to save acc
newpfxptr .DA #0 appletalk alternate prefix ptr
machidbyte .DA #0 machine ID byte
rommap .DA #0 slot ROM bit map
preflag .DA #0 prefix active flag
mliact .DA #0 MLI active flag
mliretn .DA 0 last MLI call return address
mlix .DA #0 MLI X register savearea
mliy .DA #0 MLI Y register savearea
2019-10-19 18:35:30 +00:00
*--------------------------------------
2019-10-16 06:09:13 +00:00
* language card bank switching routines which must reside at $BFA0 because
* workstation software patches this area
2019-10-19 18:35:30 +00:00
*--------------------------------------
GP.MLIEXIT eor $E000 test for rom enable
2019-10-16 06:09:13 +00:00
beq .1 taken if ram enabled
sta RROMBNK2 read ROM
bne .2 always
.1 lda bnkbyt2 for alternate ram
eor $D000 test
beq .2 branch if not alternate ram
lda RRAMWRAMBNK2 else enable alt $D000
.2 pla return code
rti re-enable interrupts and return
2019-10-19 18:35:30 +00:00
*--------------------------------------
GP.MLICONT sec
2019-10-16 06:09:13 +00:00
ror mliact notify interrupt routines MLI active.
lda $E000 preserve language card/rom orientation
sta bnkbyt1 for proper restoration when mli exits.
lda $D000
sta bnkbyt2
lda RRAMWRAMBNK1 force ram card on
lda RRAMWRAMBNK1 with write allowed
jmp XDOS.MLI
2019-10-19 18:35:30 +00:00
*--------------------------------------
*GP.IrqExit lda bankid determine state of ram card (ROM/RAM)
*irqxit0
* beq .2 branch if ram card enabled.
* bmi .1 branch if alternate $D000 enabled.
2019-10-16 06:09:13 +00:00
2019-10-19 18:35:30 +00:00
* lsr determine if no ram card present.
* bcc .3 branch if rom only system.
2019-10-18 19:57:38 +00:00
2019-10-19 18:35:30 +00:00
* lda RROMWRAMBNK2 enable rom
* bcs .3 always taken
2019-10-18 19:57:38 +00:00
2019-10-19 18:35:30 +00:00
*.1 lda RRAMWRAMBNK2 enable alternate $D000
2019-10-16 06:09:13 +00:00
2019-10-19 18:35:30 +00:00
*.2 lda #$01 preset bankid for rom.
* sta bankid (reset if ram card interrupt)
2019-10-16 06:09:13 +00:00
2019-10-19 18:35:30 +00:00
*.3 lda p8areg restore acc
* rti exit
*--------------------------------------
.LIST ON
GP.FREE2 .EQ $BFEB-*
.LIST OFF
.BS GP.FREE2
*--------------------------------------
GP.IRQV bit RRAMWRAMBNK1 ***NEW ROM ONLY IRQ $fffe > $Cxxx space***
bit RRAMWRAMBNK1 Entry used when rom/mainLC/auxLC
jmp XDOS.IRQV
*--------------------------------------
2019-10-16 06:09:13 +00:00
bnkbyt1 .DA #0
bnkbyt2 .DA #0
.HS 00000000 pad to before $BFFA
.DA #4 gsos compatibility byte ($BFFA)
.DA #0 pad
.DA #0 reserved
.DA #0 version # of running interpreter
.DA #0 preserved for System Utilities
kversion .HS 23 represents release 2.0.3
*--------------------------------------
MAN
SAVE USR/SRC/PRODOS.FX/PRODOS.S.GP
LOAD USR/SRC/PRODOS.FX/PRODOS.S
ASM