|
|
DataMuseum.dkPresents historical artifacts from the history of: CR80 Hard and Floppy Disks |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CR80 Hard and Floppy Disks Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 3727 (0xe8f)
Types: TextFile
Names: »PLZ.MACROS.S«
└─⟦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«
*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