DataMuseum.dk

Presents historical artifacts from the history of:

CR80 Hard and Floppy Disks

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

See our Wiki for more about CR80 Hard and Floppy Disks

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦15b692303⟧ TextFile

    Length: 3727 (0xe8f)
    Types: TextFile
    Names: »PLZ.MACROS.S«

Derivation

└─⟦31b8a9b6a⟧ Bits:30005199 8" Zilog MCZ/1 Floppy CR80FD_0025 ( TC 500 SEC. PROTOCOL BB V2 830407 NCJ )
    └─ ⟦this⟧ »PLZ.MACROS.S« 
└─⟦cf416a62a⟧ Bits:30005201 8" Zilog MCZ/1 Floppy CR80FD_0027 ( TC 500 SEC. PROTOCOL BACK UP! (V2) BB SEC 821119 NCJ )
    └─ ⟦this⟧ »PLZ.MACROS.S« 

TextFile

*LIST OFF
;PROCEDURE ENTRY FOR PLZ PROCEDURES
ENT:	MACRO #N
			COND .NOT.(#N=0)
			POP DE
			ENDC
			COND (#N=1)^(#N=2)
			PUSH HL
			COND #N=2
			PUSH HL
			ENDC
			COND .NOT.(#N=0)&.NOT.(#N=1)&.NOT.(#N=2)
			LD HL,-2*#N
			ADD HL,SP
			LD	SP,HL
			ENDC
			COND .NOT.(#N=0)
			PUSH DE
			ENDC
			PUSH IX
			LD IX,0
			ADD IX,SP
			ENDM
;
;	PLZ PROCEDURE RETURN
;
RTN:	MACRO #N
			POP	IX
			COND #N=0
			RET
			ENDC
			COND (#N=1)^(#N=2)^(#N=3)
			POP	HL
			POP	DE
			COND (#N=2)^(#N=3)
			POP	DE
			COND #N=3
			POP	DE
			ENDC
			COND (#N=1)^(#N=2)^(#N=3)
			JP	(HL)
			ENDC
			COND .NOT.(#N=0)&.NOT.(#N=1)&.NOT.(#N=2)&.NOT.(#N=3)
			POP DE
			LD	HL,2*#N
			ADD	HL,SP
			LD	SP,HL
			EX	DE,HL
			JP	(HL)
			ENDC
			ENDM
 
 
;THIS MACRO INITS A PLZ VARIABLE LIST FOR ASSEMBLER PROGRAMS
;INTERFACING TO PLZ
;THE OTHER MACROS SHOULD BE USED AS FOLLOWS:
;
;PLZ - CALL: VAR1 VAR2 := PQZ( IN1,IN2,IN3)
;
;ASSEMBLER STATEMENTS:
;
; 	PLZVAR
;	PLZLOCAL	X,Y,Z
;	PLZIN		IN1,IN2,IN3
;	PLZOUT		VAR1,VAR2
;
PLZVAR MACRO
DLAB: DEFL 2
		ENDM
 
PLZOUT MACRO #0 #1 #2 #3 #4 #5 #6 #7 #8 #9 #A #B #C #D #E #F
DLAB: DEFL DLAB+2
#0: EQU	DLAB
	COND '#1'
		PLZOUT #1 #2 #3 #4 #5 #6 #7 #8 #9 #A #B #C #D #E #F
		ENDC
		ENDM
PLZLOCAL MACRO #0 #1 #2 #3 #4 #5 #6 #7 #8 #9 #A #B #C #D #E #F
		PLZOUT #F #E #D #C #B #A #9 #8 #7 #6 #5 #4 #3 #2 #1 #0
		ENDM
 
PLZIN	MACRO #0 #1 #2 #3 #4 #5 #6 #7 #8 #9 #A #B #C #D #E #F
		PLZOUT #F #E #D #C #B #A #9 #8 #7 #6 #5 #4 #3 #2 #1 #0
		ENDM
 
;
;
GETWORD: MACRO #h #l #w
		LD #l,(IX+#w)
		LD #h,(IX+#w+1)
		ENDM
;
GETBYTE: MACRO #r #b
		LD #r,(IX+#b)
		ENDM
;
PUTWORD: MACRO #w #h #l
		LD (IX+#w),#l
		LD (IX+#w+1),#h
		ENDM
;
PUTBYTE: MACRO #b #r
		LD (IX+#b),#r
		ENDM
;
SUBMIT	 MACRO #par #request
		COND '#request'='P'
		GETWORD H L,#par
		PUSH	HL
PLAB:	DEFL	1
		ENDC
		COND .NOT.('#request'='P')
PLAB:	DEFL	0
		COND ('#par'='HL')^('#par'='DE')^('#par'='BC')^('#par'='IY')
		PUSH #par
PLAB:	DEFL	 1
		ENDC
		COND ('#par'='hl')^('#par'='de')^('#par'='bc')^('#par'='iy')
		PUSH #par
PLAB:	DEFL 1
		ENDC
		COND PLAB=0
		COND '#request'='R'
		LD	L,#par			;get register
		PUSH	HL
PLAB:	DEFL 1
		ENDC
		COND PLAB=0
		LD	HL,#par
		PUSH HL
		ENDC
		ENDM
 
RETRIEVEVALUE	MACRO #register #par
		COND ('#register'='HL')^('#register'='hl')
		POP HL
		ENDC
		COND ('#register'='DE')^('#register'='de')
		POP DE
		ENDC
		COND ('#register'='BC')^('#register'='bc')
		POP BC
		ENDC
		COND ('#register'='IY')^('#register'='iy')
		POP IY
		ENDC
		COND .NOT.('#register'='HL')&.NOT.('#register'='BC')&.NOT.('#register'='DE')
		COND .NOT.('#register'='hl')&.NOT.('#register'='bc')&.NOT.('#register'='de')
		COND .NOT.('#register'='iy')&.NOT.('#register'='IY')
		POP HL
		LD  #register,L
		ENDC
		ENDM
 
MARKSTACK  MACRO #n
		COND (#n=1)^(#n=2)
		PUSH HL
		COND #n=2
		PUSH HL
		ENDC
		COND .NOT.(#n=0)&.NOT.(#n=1)&.NOT.(#n=2)
		LD HL,-2*#n
		ADD HL,SP
		LD  SP,HL
		ENDC
		ENDM
 
plzvar	macro
		PLZVAR
		endm
 
plzout	macro #0 #1 #2 #3 #4 #5 #6 #7 #8 #9 #A #B #C #D #E #F
		PLZOUT #0 #1 #2 #3 #4 #5 #6 #7 #8 #9 #A #B #C #D #E #F
		endm
 
plzin	macro #0 #1 #2 #3 #4 #5 #6 #7 #8 #9 #A #B #C #D #E #F
		PLZIN #0 #1 #2 #3 #4 #5 #6 #7 #8 #9 #A #B #C #D #E #F
		endm
 
plzlocal macro #0 #1 #2 #3 #4 #5 #6 #7 #8 #9 #A #B #C #D #E #F 
		PLZLOCAL #0 #1 #2 #3 #4 #5 #6 #7 #8 #9 #A #B #C #D #E #F
		endm
 
getword	macro #a #b #c
		GETWORD #a #b #c
		endm
 
putword	macro #a #b #c
		PUTWORD #a #b #c
		endm
 
getbyte	macro #a #b
		GETWORD #a #b
		endm
 
putbyte	macro #a #b
		PUTBYTE #a #b
		endm
 
submit	macro #a #b
		SUBMIT #a #b
		endm
 
retrievevalue macro #a #b
		RETRIEVEVALUE #a #b
		endm
 
markstack macro #a
		MARKSTACK #a
		endm
 
ent		macro #num
		ENT   #num
		endm
 
rtn		macro #num
  		RTN   #num
		endm
 
*MACLIST OFF
*LIST ON