|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 1024 (0x400) Types: TextFile Names: »SAVREG.SRC«
└─⟦c9df7130d⟧ Bits:30005915 Pascal MT+ Release 5.2 (Jet-80) └─ ⟦this⟧ »SAVREG.SRC«
;SAVE THE HL REG AND SET UP THE POINTERS TO THE TWO SETS ON THE STACK ; NAME SAVREG ENTRY SAVREG ; ; ; ON ENTRY : ; HL = OFFSET OF SECOND SET FROM TOP OF STACK ; DE = OFFSET FROM HL OF EQUIVALENT BYTE IN FIRST SET ; ; ON EXIT : ; HL -> SECOND SET ; DE -> FIRST SET ; B = SIZE OF SECOND SET ( OFFSET OF SET FROM TOP OF STACK ) ; ; THE RETURN ADDRESS IS PUSHED TWO LOCATIONS LOWER ON THE STACK AND ; THE OFFSET OF THE SECOND SET IS STORED IN ITS OLD LOCATION. ; THE OFFSET IS USED LATER TO CALCULATE HOW MANY BYTES TO ; REMOVE, TO REMOVE THE SECOND SET FROM THE SET. ; SAVREG: POP B ; B = RETURN ADDRESS PUSH H ; OFFSET OF SECOND SET PUSH B MOV B,L ; B = SIZE OF SECOND SET ( 0..255 ) DAD S ; SET HL TO POINT TO START OF SECOND SET INX H ; CORRECT FOR OFFSET AND RETURN ADDRESS ON THE STACK INX H INX H INX H INX H XCHG ; DE -> SECOND SET DAD D ; HL -> FIRST SET XCHG RET ENDIF «eof»