2019-04-29 20:36:58 +00:00
|
|
|
|
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.
|
2019-05-07 11:18:47 +00:00
|
|
|
|
.DA tclk_in' clock routine entry address.
|
2019-04-29 20:36:58 +00:00
|
|
|
|
p8errv .EQ *-ofsG error reporting hook.
|
|
|
|
|
jmp syserr1
|
|
|
|
|
sysdeath .EQ *-ofsG
|
|
|
|
|
jmp sysdeath1 system failure hook.
|
|
|
|
|
p8error .EQ *-ofsG P8 error code
|
2019-05-07 11:18:47 +00:00
|
|
|
|
.DA #00'
|
2019-04-29 20:36:58 +00:00
|
|
|
|
drivertbl1 .EQ *-ofsG device driver table 1
|
|
|
|
|
dc i2'nodevice' slot 0 reserved
|
|
|
|
|
dc i2'nodevice' s1, d1
|
|
|
|
|
dc i2'nodevice' s2, d1
|
|
|
|
|
dc i2'nodevice' s3, d1
|
|
|
|
|
dc i2'nodevice' s4, d1
|
|
|
|
|
dc i2'nodevice' s5, d1
|
|
|
|
|
dc i2'nodevice' s6, d1
|
|
|
|
|
dc i2'nodevice' s7, d1
|
|
|
|
|
drivertbl2 .EQ *-ofsG device driver table 2
|
|
|
|
|
dc i2'nodevice' slot 0 reserved
|
|
|
|
|
dc i2'nodevice' s1, d2
|
|
|
|
|
dc i2'nodevice' s2, d2
|
|
|
|
|
dc i2'nodevice' s3, d2
|
|
|
|
|
dc i2'nodevice' s4, d2
|
|
|
|
|
dc i2'nodevice' s5, d2
|
|
|
|
|
dc i2'nodevice' s6, d2
|
|
|
|
|
dc i2'nodevice' s7, d2
|
|
|
|
|
devnum .EQ *-ofsG most recent accessed device
|
2019-05-07 11:18:47 +00:00
|
|
|
|
.DA #00'
|
2019-04-29 20:36:58 +00:00
|
|
|
|
numdevs .EQ *-ofsG count (-1) active devices
|
|
|
|
|
dc h'FF'
|
|
|
|
|
devlist .EQ *-ofsG active device list
|
|
|
|
|
dc h'00000000000000' up to 14 units may be active
|
|
|
|
|
dc h'00000000000000'
|
2019-05-07 11:18:47 +00:00
|
|
|
|
.DA #00'
|
2019-04-29 20:36:58 +00:00
|
|
|
|
msb off
|
|
|
|
|
dc c'(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
|
2019-05-07 11:18:47 +00:00
|
|
|
|
.DA #00'
|
2019-04-29 20:36:58 +00:00
|
|
|
|
afbank .EQ *-ofsG
|
|
|
|
|
dc h'00'
|
|
|
|
|
|
|
|
|
|
* memory map of lower 48k. each bit represents 1 page.
|
|
|
|
|
* protected pages = 1, unprotected = 0
|
|
|
|
|
|
|
|
|
|
memmap .EQ *-ofsG P8 memory bitmap
|
|
|
|
|
dc h'C000000000000000'
|
|
|
|
|
dc h'0000000000000000'
|
2019-05-07 11:18:47 +00:00
|
|
|
|
.DA #0000000000000001'
|
2019-04-29 20:36:58 +00:00
|
|
|
|
|
|
|
|
|
* table of buffer addresses for currently open files.
|
|
|
|
|
* these can only be changed thru the mli call setbuf.
|
|
|
|
|
|
|
|
|
|
buftbl .EQ *-ofsG
|
|
|
|
|
dc h'0000' file #1
|
|
|
|
|
dc h'0000' file #2
|
|
|
|
|
dc h'0000' file #3
|
|
|
|
|
dc h'0000' file #4
|
2019-05-07 11:18:47 +00:00
|
|
|
|
.DA #0000' file #5
|
2019-04-29 20:36:58 +00:00
|
|
|
|
dc h'0000' file #6
|
|
|
|
|
dc h'0000' file #7
|
|
|
|
|
dc h'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
|
2019-05-07 11:18:47 +00:00
|
|
|
|
.DA #0000' int #1
|
2019-04-29 20:36:58 +00:00
|
|
|
|
dc h'0000' int #2
|
|
|
|
|
dc h'0000' int #3
|
|
|
|
|
dc h'0000' int #4
|
|
|
|
|
p8areg .EQ *-ofsG A register savearea
|
2019-05-07 11:18:47 +00:00
|
|
|
|
.DA #00'
|
2019-04-29 20:36:58 +00:00
|
|
|
|
p8xreg .EQ *-ofsG X register savearea
|
|
|
|
|
dc h'00'
|
|
|
|
|
p8yreg .EQ *-ofsG Y register savearea
|
|
|
|
|
dc h'00'
|
|
|
|
|
p8sreg .EQ *-ofsG S register savearea
|
|
|
|
|
dc h'00'
|
|
|
|
|
p8preg .EQ *-ofsG P register savearea
|
|
|
|
|
dc h'00'
|
|
|
|
|
bankid .EQ *-ofsG bank ID byte (ROM/RAM)
|
|
|
|
|
dc h'01'
|
|
|
|
|
intadr .EQ *-ofsG interrupt return address
|
|
|
|
|
dc h'0000'
|
|
|
|
|
p8date .EQ *-ofsG bits 15-9=yr, 8-5=mo, 4-0=day
|
|
|
|
|
dc h'0000'
|
|
|
|
|
p8time .EQ *-ofsG bits 12-8=hr, 5-0=min, low-hi format
|
|
|
|
|
dc h'0000'
|
|
|
|
|
flevel .EQ *-ofsG current file level
|
|
|
|
|
dc h'00'
|
|
|
|
|
bubit .EQ *-ofsG backup bit disable, setfileinfo only
|
|
|
|
|
dc h'00'
|
|
|
|
|
spare1 .EQ *-ofsG used to save acc
|
|
|
|
|
dc h'00'
|
|
|
|
|
newpfxptr .EQ *-ofsG appletalk alternate prefix ptr
|
|
|
|
|
dc h'00'
|
|
|
|
|
machid .EQ *-ofsG machine ID byte
|
|
|
|
|
dc h'00'
|
|
|
|
|
rommap .EQ *-ofsG slot ROM bit map
|
|
|
|
|
dc h'00'
|
|
|
|
|
preflag .EQ *-ofsG prefix active flag
|
|
|
|
|
dc h'00'
|
|
|
|
|
mliact .EQ *-ofsG MLI active flag
|
|
|
|
|
dc h'00'
|
|
|
|
|
mliretn .EQ *-ofsG last MLI call return address
|
|
|
|
|
dc h'0000'
|
|
|
|
|
mlix .EQ *-ofsG MLI X register savearea
|
|
|
|
|
dc h'00'
|
|
|
|
|
mliy .EQ *-ofsG MLI Y register savearea
|
|
|
|
|
dc h'00'
|
|
|
|
|
|
|
|
|
|
* 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 L2EAA taken if ram enabled
|
|
|
|
|
sta romin read ROM
|
|
|
|
|
bne L2EB5 always
|
|
|
|
|
L2EAA lda bnkbyt2 for alternate ram
|
|
|
|
|
eor $D000 test
|
|
|
|
|
beq L2EB5 branch if not alternate ram
|
|
|
|
|
lda altram else enable alt $D000
|
|
|
|
|
L2EB5 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 L2EE2 branch if ram card enabled.
|
|
|
|
|
bmi L2EDF branch if alternate $D000 enabled.
|
|
|
|
|
lsr a determine if no ram card present.
|
|
|
|
|
bcc L2EE7 branch if rom only system.
|
|
|
|
|
lda romin1 enable rom
|
|
|
|
|
bcs L2EE7 always taken
|
|
|
|
|
L2EDF lda altram enable alternate $D000
|
|
|
|
|
L2EE2 lda #$01 preset bankid for rom.
|
|
|
|
|
sta bankid (reset if ram card interrupt)
|
|
|
|
|
L2EE7 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
|
|
|
|
|
dc h'00'
|
|
|
|
|
bnkbyt2 .EQ *-ofsG
|
|
|
|
|
dc h'00'
|
|
|
|
|
dc h'00000000' pad to before $BFFA
|
|
|
|
|
dc h'04' gsos compatibility byte ($BFFA)
|
2019-05-07 11:18:47 +00:00
|
|
|
|
.DA #00' pad
|
2019-04-29 20:36:58 +00:00
|
|
|
|
dc h'00' reserved
|
|
|
|
|
dc h'00' version # of running interpreter
|
|
|
|
|
dc h'00' preserved for System Utilities
|
|
|
|
|
kversion .EQ *-ofsG kernal version
|
|
|
|
|
dc h'23' represents release 2.0.3
|
|
|
|
|
|
|
|
|
|
* end of obj mli_1
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
MAN
|
2019-07-08 12:56:54 +00:00
|
|
|
|
SAVE USR/SRC/PRODOS.203/PRODOS.S.GP
|
|
|
|
|
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
2019-04-29 20:36:58 +00:00
|
|
|
|
ASM
|