home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.whtech.com
/
ftp.whtech.com.tar
/
ftp.whtech.com
/
club100
/
ref
/
romhd.asm
< prev
next >
Wrap
Assembly Source File
|
2006-10-19
|
3KB
|
198 lines
;----------------------------------------------------------
;Option ROM Header must be ORGed at 0 by the assembler
;or linked at 0 by the linker.
;----------------------------------------------------------
;Routine to turn on the Option ROM
OPON: EQU 0FAA4H
;Globals on the Telcom Back Page to temporarily hold HL and
;DE registers during a CALL to Standard ROM, or during an
;Interrupt.
HOLDH: EQU 0FCC0H
HOLDD: EQU 0FCC2H
INTH: EQU 0FCC4H
INTD: EQU 0FCC6H
;Entry point arrived at by CALL 63012
RST0?:
;Optional for linking versions
; EXTRN PROGRAM
INX SP
INX SP
JMP PROGRAM
DB 0,0,0
RST1?: ;Not used
RET
DB 0,0,0,0,0,0,0
RST2?: ;Not used
RET
DB 0,0,0,0,0,0,0
RST3?: ;Not Used
RET
DB 0,0,0,0,0,0,0
RST4?: ;Not Used
RET
DB 0,0,0
TRAP?:
DI
JMP INTRAP
RST5?: ;Not Used
RET
DB 0,0,0
RST55?:
DI
JMP INT55
;RST 6 used as short call to a Standard ROM routine.
RST6?:
JMP STDCALL
DB 0
;Replaces the 6.5 interrupt and sets up a call to 6.5 in
;Standard ROM
RST65?:
DI
JMP INT65
RST7?: ;Not Used
RET
DB 0,0,0
;Replaces the 7.5 interrupt and sets up a call to 7.5 in
;Standard ROM
RST75?:
DI
JMP INT75
;An image of the OPON routine copied to FAA4H by the
;Model 100 power up logic.
OPONIMG:
PUSH PSW
MVI A,1
OUT 0E0H
POP PSW
RET
DB 0
;---------------------------------------------------------
;The STDCALL routine allows a program running in the
;the Option ROM to call and return to an address in the
;Option ROM.
;Syntax is to use a RST 6 plus the address to be called.
;
; RST 6
; DW 04B44H
;---------------------------------------------------------
STDCALL:
DI
SHLD HOLDH ;Caller's HL
XCHG
SHLD HOLDD ;Caller's DE
POP H ;(HL)=Routine to Call
MOV E,M
INX H
MOV D,M ;DE=Routine to Call
INX H ;HL=Return Address
PUSH H
LXI H,OPON ;return through OPON
PUSH H
PUSH D ;Return Address
LHLD HOLDD ;Caller's DE
XCHG
LHLD HOLDH ;Caller's HL
EI
JMP STDON
;Routines for each of the hardware traps.
INTRAP:
CALL INTCALL
DW 0024H
RET
INT55:
CALL INTCALL
DW 002CH
RET
INT65:
CALL INTCALL
DW 0034H
RET
INT75:
CALL INTCALL
DW 003CH
RET
OPX:
;Turns off the Option ROM (or turns on Standard ROM)
;Depending on your viewpoint.
;This routine must be ORGed at 85H. Ensure the the previous
;Code does not overlap into 85H
ORG 85H
;Optional for linking versions
; PUBLIC STDON
STDON:
PUSH PSW
PUSH H
LXI H,26C8H
XTHL
XRA A
OPEXIT:
OUT 0E0H
RET
;---------------------------------------------------------
;The INTCALL routine allows a program running in the Option
;ROM to call an interrupt routine.
;Syntax: CALL INTCALL plus the address to be called.
;
; CALL INTCALL
; DW 24H
;---------------------------------------------------------
INTCALL:
SHLD INTH ;Caller's HL
XCHG
SHLD INTD ;Caller's DE
POP H ;(HL)=Routine to Call
MOV E,M
INX H
MOV D,M ;DE=Routine to Call
INX H ;HL=Return Address
PUSH H
LXI H,OPON ;return through OPON
PUSH H
PUSH D ;Return Address
LHLD INTD ;Caller's DE
XCHG
LHLD INTH ;Caller's HL
JMP STDON
;For Non linking versions your Code begins here
;For linking versions delete the label below, and
;use it for the entry point to your program after
;declaring it PUBLIC.
PROGRAM:
END