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 - 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