mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-26 18:04:07 +00:00
Upload
Digital Research
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
; MACRO LIBRARY FOR "SELECT" CONSTRUCT
|
||||
;
|
||||
; LABEL GENERATORS
|
||||
GENSLXI MACRO NUM
|
||||
;; LOAD HL WITH ADDRESS OF CASE LIST
|
||||
LXI H,SELV&NUM
|
||||
ENDM
|
||||
;
|
||||
GENCASE MACRO NUM,ELT
|
||||
;; GENERATE JMP TO END OF CASES
|
||||
IF ELT GT 0
|
||||
JMP ENDS&NUM ;;PAST ADDR LIST
|
||||
ENDIF
|
||||
;; GENERATE LABEL FOR THIS CASE
|
||||
CASE&NUM&@&ELT:
|
||||
ENDM
|
||||
;
|
||||
GENELT MACRO NUM,ELT
|
||||
;; GENERATE ONE ELEMENT OF CASE LIST
|
||||
DW CASE&NUM&@&ELT
|
||||
ENDM
|
||||
;
|
||||
GENSLAB MACRO NUM,ELTS
|
||||
;; GENERATE CASE LIST
|
||||
SELV&NUM:
|
||||
ECNT SET 0 ;;COUNT ELEMENTS
|
||||
REPT ELTS ;;GENERATE DW'S
|
||||
GENELT NUM,%ECNT
|
||||
ECNT SET ECNT+1
|
||||
ENDM ;;END OF DW'S
|
||||
;; GENERATE END OF CASE LIST LABEL
|
||||
ENDS&NUM:
|
||||
ENDM
|
||||
;
|
||||
SELNEXT MACRO
|
||||
;; GENERATE THE NEXT CASE
|
||||
GENCASE %CCNT,%ECNT
|
||||
;; INCREMENT THE CASE ELEMENT COUNT
|
||||
ECNT SET ECNT+1
|
||||
ENDM
|
||||
;
|
||||
SELECT MACRO VAR
|
||||
;; GENERATE CASE SELECTION CODE
|
||||
CCNT SET 0 ;;COUNT "SELECTS"
|
||||
SELECT MACRO V ;;REDEFINITION OF SELECT
|
||||
;; SELECT ON V OR ACCUMULATOR CONTENTS
|
||||
IF NOT NUL V
|
||||
LDA V ;;LOAD SELECT VARIABLE
|
||||
ENDIF
|
||||
GENSLXI %CCNT ;;GENERATE THE LXI H,SELV#
|
||||
MOV E,A ;;CREATE DOUBLE PRECISION
|
||||
MVI D,0 ;;V IN D,E PAIR
|
||||
DAD D ;;SINGLE PREC INDEX
|
||||
DAD D ;;DOUBLE PREC INDEX
|
||||
MOV E,M ;;LOW ORDER BRANCH ADDR
|
||||
INX H ;;TO HIGH ORDER BYTE
|
||||
MOV D,M ;;HIGH ORDER BRANCH INDEX
|
||||
XCHG ;;READY BRANCH ADDRESS IN HL
|
||||
PCHL ;;GONE TO THE PROPER CASE
|
||||
ECNT SET 0 ;;ELEMENT COUNTER RESET
|
||||
SELNEXT ;;SELECT CASE 0
|
||||
ENDM
|
||||
;; INVOKE REDEFINED SELECT THE FIRST TIME
|
||||
SELECT VAR
|
||||
ENDM
|
||||
;
|
||||
ENDSEL MACRO
|
||||
;; END OF SELECT, GENERATE CASE LIST
|
||||
GENCASE %CCNT,%ECNT ;;LAST CASE
|
||||
GENSLAB %CCNT,%ECNT ;;CASE LIST
|
||||
;; INCREMENT "SELECT" COUNT
|
||||
CCNT SET CCNT+1
|
||||
ENDM
|
||||
|
||||
Reference in New Issue
Block a user