A2osX/ProDOS.203/ProDOS.S.GP.txt
2019-09-10 22:53:18 +02:00

201 lines
5.4 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.

NEW
AUTO 3,1
* object code = mli_1
* global page
ofsG .EQ H2E00-MLI offset to global org
H2E00 jmp mlient1 $2E00-2EFF moved to $BF00
jspare .EQ *-ofsG
jmp jspare will be changed to point to dispatcher.
clockv .EQ *-ofsG P8 clock vector
rts changed to jmp ($4C) if clock present.
.DA tclk_in clock routine entry address.
p8errv .EQ *-ofsG error reporting hook.
jmp syserr1
sysdeath .EQ *-ofsG
jmp sysdeath1 system failure hook.
p8error .EQ *-ofsG P8 error code
.DA #0
drivertbl1 .EQ *-ofsG device driver table 1
.DA nodevice
.DA nodevice
.DA nodevice
.DA nodevice
.DA nodevice
.DA nodevice
.DA nodevice
.DA nodevice
drivertbl2 .EQ *-ofsG device driver table 2
.DA nodevice
.DA nodevice
.DA nodevice
.DA nodevice
.DA nodevice
.DA nodevice
.DA nodevice
.DA nodevice
devnum .EQ *-ofsG most recent accessed device
.DA #0
numdevs .EQ *-ofsG count (-1) active devices
.DA #$ff
devlist .EQ *-ofsG active device list
.HS 00000000000000 up to 14 units may be active
.HS 00000000000000
.DA #0
.AS "(C)APPLE "
mlient1 .EQ *-ofsG
php
sei
jmp mlicont
aftirq .EQ *-ofsG irq returns here.
sta ramin read/write RAM bank 1
jmp fix45 restore $45 after interrupt in LC
oldacc .EQ *-ofsG
.DA #0
afbank .EQ *-ofsG
.HS 0
* memory map of lower 48k. each bit represents 1 page.
* protected pages = 1, unprotected = 0
memmap .EQ *-ofsG P8 memory bitmap
.HS C000000000000000
.HS 0000000000000000
.HS 0000000000000001
* table of buffer addresses for currently open files.
* these can only be changed thru the mli call setbuf.
buftbl .EQ *-ofsG
.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
* 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.
inttbl .EQ *-ofsG interrupt table
.HS 0000 int #1
.HS 0000 int #2
.HS 0000 int #3
.HS 0000 int #4
p8areg .EQ *-ofsG A register savearea
.DA #0
p8xreg .EQ *-ofsG X register savearea
.DA #0
p8yreg .EQ *-ofsG Y register savearea
.DA #0
p8sreg .EQ *-ofsG S register savearea
.DA #0
p8preg .EQ *-ofsG P register savearea
.DA #0
bankid .EQ *-ofsG bank ID byte (ROM/RAM)
.DA #1
intadr .EQ *-ofsG interrupt return address
.HS 0000
p8date .EQ *-ofsG bits 15-9=yr, 8-5=mo, 4-0=day
.HS 0000
p8time .EQ *-ofsG bits 12-8=hr, 5-0=min, low-hi format
.HS 0000
flevel .EQ *-ofsG current file level
.DA #0
bubit .EQ *-ofsG backup bit disable, setfileinfo only
.DA #0
spare1 .EQ *-ofsG used to save acc
.DA #0
newpfxptr .EQ *-ofsG appletalk alternate prefix ptr
.DA #0
machid .EQ *-ofsG machine ID byte
.DA #0
rommap .EQ *-ofsG slot ROM bit map
.DA #0
preflag .EQ *-ofsG prefix active flag
.DA #0
mliact .EQ *-ofsG MLI active flag
.DA #0
mliretn .EQ *-ofsG last MLI call return address
.DA 0
mlix .EQ *-ofsG MLI X register savearea
.DA #0
mliy .EQ *-ofsG MLI Y register savearea
.DA #0
* language card bank switching routines which must reside at $BFA0 because
* workstation software patches this area
HBFA0 .EQ *-ofsG
eor $E000 test for rom enable
beq .1 taken if ram enabled
sta romin read ROM
bne .2 always
.1 lda bnkbyt2 for alternate ram
eor $D000 test
beq .2 branch if not alternate ram
lda altram else enable alt $D000
.2 pla return code
rti re-enable interrupts and return
mlicont .EQ *-ofsG
sec
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 ramin force ram card on
lda ramin with write allowed
jmp xdosmli
irqexit .EQ *-ofsG
lda bankid determine state of ram card (ROM/RAM)
irqxit0 .EQ *-ofsG
beq .2 branch if ram card enabled.
bmi .1 branch if alternate $D000 enabled.
lsr determine if no ram card present.
bcc .3 branch if rom only system.
lda romin1 enable rom
bcs .3 always taken
.1 lda altram enable alternate $D000
.2 lda #$01 preset bankid for rom.
sta bankid (reset if ram card interrupt)
.3 lda p8areg restore acc
rti exit
irqent .EQ *-ofsG this entry only used when rom
bit ramin was enabled at time of interrupt.
bit ramin
jmp irqrecev
bnkbyt1 .EQ *-ofsG
.DA #0
bnkbyt2 .EQ *-ofsG
.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 .EQ *-ofsG kernal version
.HS 23 represents release 2.0.3
* end of obj mli_1
*--------------------------------------
MAN
SAVE USR/SRC/PRODOS.203/PRODOS.S.GP
LOAD USR/SRC/PRODOS.203/PRODOS.S
ASM