|
|
DataMuseum.dkPresents historical artifacts from the history of: MIKADOS |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about MIKADOS Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 2496 (0x9c0)
Types: TextFile
Notes: Mikados_K
Names: »DOIT.K«
└─⟦1f7cb7eb5⟧ Bits:30009019 ARRAY0 + nulfiler
└─⟦this⟧ »DOIT.K«
;ASSEMBLER KLAD HJÆLPE RUTINER 06.07.79
;COASM STORES HL IN TABAD. IT MUST BE CALLED AT THE START
;OF EVERY ASSEMBLER SUBROUTINE.
;
COASM::
SHLD TABAD ;SAVE TABLE ADDRESS FOR LATER
RET ;EXIT
TABAD::DS 2
;
;
;DOIT CALCULATES AN ADDRESS USING AN ADDRESS OFFSET IN A.
;THE ADDRESS IS PLACED ON TOP OF THE STACK AND THE ROUTINE
;IS CALLED USING A RETURN INSTRUCTION. THE RET INSTRUCTION
;EXECUTED IN THE UTILITY ROUTINE ITSELF WILL BRING CONTROL
;BACK TO THE ORIGINAL CALLING ROUTINE.
;
DOIT::
SHLD TEMP ;SAVE HL
PUSH D ;SAVE DE
MVI D,0 ;D=0
MOV E,A ;DE=A=ADDRESS OFFSET
LHLD TABAD ;GET TABLE ADDRESS
DAD D ;POINT AT UTILITY ROUTRINE ADDRESS
DAD D ;REMEMBER OFFSET IS IN BYTES, NOT WORDS
MOV E,M ;ADDRESS OF
INX H ;UTILITY
MOV D,M ;TO DE
POP H ;GET OLD DE BACK
XCHG ;HL=UTILITY ADDRESS, DE=OLD DE
PUSH H ;STACK UTILITY ADDRESS
LHLD TEMP ;GET OLD HL BACK
RET ;EXECUTE UTILITY--RETURN DIRECT
TEMP: DS 2
END ;