DataMuseum.dk

Presents historical artifacts from the history of:

Jet Computer Jet80

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Jet Computer Jet80

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦926bb1bac⟧ TextFile

    Length: 2432 (0x980)
    Types: TextFile
    Names: »INDIR.SRC«

Derivation

└─⟦c9df7130d⟧ Bits:30005915 Pascal MT+ Release 5.2 (Jet-80)
    └─ ⟦this⟧ »INDIR.SRC« 

TextFile

;INDIRECT LOAD AND STORE, AND ADDR. CALCULATION ROUTINES
;
	NAME INDIR
	ENTRY ILOD1,ILOD11,ILOD12,ILOD2,ILOD21,ILOD22,ILODV,ILODV1
	ENTRY ILODV2,ISTOR,ISTOR1,ISTOR2,XADDR,YADDR
;
ILOD1:	MOV	C,A		;LOAD A ZERO
ILOD11:	MOV	B,A		;CLEAR THE HIGH BYTE
ILOD12:	PUSH	B		;SAVE THE OFFSET
	PUSH	X		;INDIRECT ALWAYS OF X REG
	POP	B		;ADD OFFSET REG TO VADDR FIELD
	DAD	B		;WHICH IS IN HL
	MOV	B,M		;GET VARIABLE BASE ADDRESS
	DCX	H
	MOV	C,M
IL1V:	POP	H		;GET OFFSET
	DAD	B		;ADD TO BASE ADDRESS
	MOV	L,M		;GET VALUE
	MOV	H,A		;CLEAR HIGH BYTE
	RET			;DONE!!!
;
;
ILOD2:	MOV	C,A		;LOAD A ZERO
ILOD21:	MOV	B,A		;CLEAR THE HIGH BYTE
ILOD22:	PUSH	B		;SAVE THE OFFSET
	PUSH	X		;INDIRECT ALWAYS OF X REG
	POP	B		;ADD OFFSET REG TO VADDR FIELD
	DAD	B		;WHICH IS IN HL
	MOV	B,M		;GET VARIABLE BASE ADDRESS
	DCX	H
	MOV	C,M
IL2V:	POP	H		;GET OFFSET
	DAD	B		;ADD TO BASE ADDRESS
	MOV	B,M		;GET HIGH BYTE
	DCX	H
	MOV	L,M		;GET LOW BYTE
	MOV	H,B		;RESTORE HIGH BYTE
	RET			;DONE!!!
;
;
ILODV:	MOV	C,A		;LOAD A ZERO
ILODV1:	MOV	B,A		;CLEAR THE HIGH BYTE
ILODV2:	PUSH	B		;SAVE THE OFFSET
	PUSH	X		;ALWAYS USE X-REG FOR INDIRECT
	POP	B		;ADD OFFSET REG TO VADDR FIELD
	DAD	B		;WHICH IS IN HL
	MOV	B,M		;GET HIGH ORDER ADDRESS BYTE
	DCX	H
	MOV	C,M		;GET LOW  ORDER ADDRESS BYTE
	DCX	H
	MOV	A,M		;GET VARIABLE SIZE
	DCR	A		;CHECK SIZE
	JRZ	IL1V		;LOAD VAR OF SIZE 1
	XRA	A		;LOAD VAR OF SIZE 2
	JR	IL2V		;DONE!!!
;
;
ISTOR:	MOV	C,A		;LOAD A ZERO
ISTOR1:	MOV	B,A		;CLEAR THE HIGH BYTE
ISTOR2:	PUSH	B		;SAVE THE OFFSET
	PUSH	X		;ALWAYS USE X-REG FOR INDIRECT
	POP	B		;ADD OFFSET REG TO VADDR FIELD
	DAD	B		;WHICH IS IN HL
	MOV	B,M		;HIGH PART
	DCX	H
	MOV	C,M		;LOW PART
	DCX	H
	MOV	A,M		;GET VARIABLE SIZE
	POP	H		;RESTORE OFFSET
	DAD	B		;ADD OFFSET TO THE VARIABLE ADDRESS
	DCR	A
	JRZ	ISTR1		;STORE A ONE BYTE VARIABLE
	XRA	A		;CLEAR ACCUMULATOR
	MOV	M,D		;STORE HIGH BYTE
	MOV	D,A		;CLEAR HIGH BYTE
	DCX	H
ISTR1:	MOV	M,E		;STORE LOW  BYTE
	CMP	D		;CHECK HIGH BYTE FOR OVERFLOW
	RET
;
;
XADDR:	XRA	A
	DSBC	D		;SUBTRACT VARPART
	PUSH	X		;GET X-REG
	POP	D		;X-REG -> B-REG
	DAD	D		;ADD OFFSET TO REGISTER
	RET			;DONE!!!
;
;
YADDR:	XRA	A
	DSBC	D		;SUBTRACT VARPART
	PUSH	Y		;GET Y-REG
	POP	D		;Y-REG -> B-REG
	DAD	D		;ADD OFFSET TO REGISTER
	RET			;DONE!!!
;«eof»