home *** CD-ROM | disk | FTP | other *** search
- ; EQUATES
-
- PERCUSSION EQU TRUE
-
- SPACE EQU 20H
- UP EQU '<'
- DOWN EQU '>'
- FLT EQU 21H
- ESCAPE EQU 1BH
- DOLLAR EQU 24H
-
- ; MACROS
-
- MOVE MACRO X,Y ;; X := Y
- LDA Y
- STA X
- ENDM
-
- MOVI MACRO X,Y ;; X := Y
- MVI A,Y
- STA X
- ENDM
-
- MINC MACRO X ;; X := X + 1
- LDA X
- INR A
- STA X
- ENDM
-
- MDEC MACRO X ;; X := X - 1
- LDA X
- DCR A
- STA X
- ENDM
-
- MADD MACRO X,Y,W ;; X:=Y+W
- LDA W
- MOV B,A
- LDA Y
- ADD B
- STA X
- ENDM
-
- MADI MACRO X,Y,W ;; X:=Y+W
- LDA Y
- ADI W
- STA X
- ENDM
-
- MSUB MACRO X,Y,W ;; X:=Y-W
- LDA W
- MOV B,A
- LDA Y
- SUB B
- STA X
- ENDM
-
- MCP MACRO X,Y ;; X : Y
- LDA Y
- MOV B,A
- LDA X
- CMP B
- ENDM
-
- MCPI MACRO X,Y ;; X : Y
- LDA X
- CPI Y
- ENDM
-
- MIF MACRO X,Y,W ;; IF (B) = X THEN Y
- LDA X ;; (THEN GOTO W)
- CMP B
- JNZ $+9
- CALL Y
- JMP W
- ENDM
-
- MIFI MACRO X,Y,W ;; IF (B) = X THEN Y
- MVI A,X ;; (THEN GOTO W)
- CMP B
- JNZ $+9
- CALL Y
- JMP W
- ENDM
-
- DMOV MACRO X,Y ;; X := Y
- LHLD Y
- SHLD X
- ENDM
-
- DMVI MACRO X,Y ;; X := Y
- LXI H,Y
- SHLD X
- ENDM
-
- DINC MACRO X ;; X := X + 1
- LHLD X
- INX H
- SHLD X
- ENDM
-
- DDEC MACRO X ;; X := X - 1
- LHLD X
- DCX H
- SHLD X
- ENDM
-
- DADD MACRO X,Y,W ;; X:=Y+W
- LHLD W
- XCHG
- LHLD Y
- DAD D
- SHLD X
- ENDM
-
- DADI MACRO X,Y,W ;; X:=Y+W
- LHLD Y
- LXI D,W
- DAD D
- SHLD X
- ENDM
-
- DSUB MACRO X,Y,W ;; X:=Y-W
- LHLD W
- XCHG
- LHLD Y
- MOV A,L
- SUB E
- MOV L,A
- MOV A,H
- SBB D
- MOV H,A
- SHLD X
- ENDM
-
- DMUL MACRO X,Y,W ;; X:=Y*W
- LHLD W
- XCHG
- LHLD Y
- CALL MULTIPLY
- SHLD X
- ENDM
-
- DMLI MACRO X,Y,W ;; X:=Y*W
- LHLD Y
- LXI D,W
- CALL MULTIPLY
- SHLD X
- ENDM
-
- DDIV MACRO X,Y,W ;; X:=Y/W
- LHLD W
- MOV B,H
- MOV C,L
- LHLD Y
- XCHG
- LXI H,0
- CALL DIVIDE
- XCHG
- SHLD X
- ENDM
-
- DCP MACRO X,Y ;; X : Y
- LHLD Y
- XCHG
- LHLD X
- CALL CPHLDE
- ENDM
-
- DCPI MACRO X,Y ;; X:Y
- LHLD X
- LXI D,Y
- CALL CPHLDE
- ENDM
-
- FPUSH MACRO X ;; STACK:=FP
- LHLD X+2
- PUSH H
- LHLD X
- PUSH H
- ENDM
-
- FPOP MACRO X ;; FP:=STACK
- POP H
- SHLD X
- POP H
- SHLD X+2
- ENDM
-
- FMOV MACRO X,Y ;; X:=Y
- DMOV X,Y
- DMOV X+2,Y+2
- ENDM
-
- FADD MACRO X,Y,W ;; X:=Y+W
- FPUSH Y
- FPUSH W
- CALL FPFADD
- FPOP X
- ENDM
-
- FSUB MACRO X,Y,W ;; X:=Y-W
- FPUSH Y
- FPUSH W
- CALL FPFSUB
- FPOP X
- ENDM
-
- FMUL MACRO X,Y,W ;; X:=Y*W
- FPUSH Y
- FPUSH W
- CALL FPFMUL
- FPOP X
- ENDM
-
- FDIV MACRO X,Y,W ;; X:=Y/W
- FPUSH Y
- FPUSH W
- CALL FPFDIV
- FPOP X
- ENDM
-
- STCP MACRO X,Y,W ;; X:Y
- LXI H,Y ;; STRING
- LXI D,X ;; COMPARE
- MVI A,W
- CALL STCMP
- ENDM
-
- STRINT MACRO X,Y ;; Y:=INT(X)
- LXI H,X
- CALL STR$TO$INT
- SHLD Y
- ENDM
-
- INTSTR MACRO X,Y,W ;; Y:=STR(X)
- LHLD X
- XCHG
- LXI H,Y
- MVI A,W
- CALL INT$TO$STR
- ENDM
-
- INTFLT MACRO X,Y ;; Y:=FLOAT(X)
- LHLD X
- PUSH H
- CALL FPFFLOAT
- FPOP Y
- ENDM
-
- FLTINT MACRO X,Y ;; Y:=TRUNC(X)
- FPUSH X
- CALL FPFFIX
- POP H
- SHLD Y
- ENDM
-
- XGET MACRO X,Y ;; A:=X[Y]
- LXI D,X
- LHLD Y
- DAD D
- MOV A,M
- ENDM
-
- XPUT MACRO X,Y ;; X[Y]:=A
- LXI D,X
- LHLD Y
- DAD D
- MOV M,A
- ENDM
-
- FCHI MACRO X,Y,W ;; FILLCHAR(X,Y,W)
- LXI H,X
- MVI A,W
- MVI B,Y
- CALL FILL$CHAR
- ENDM
-
- FCHR MACRO X,Y,W
- LXI H,X
- LDA Y
- MOV B,A
- MVI A,W
- CALL FILL$CHAR
- ENDM
-
- LMVI MACRO X,Y,W ;; MOVELEFT(X,Y,W)
- LXI H,X
- LXI D,Y
- MVI A,W
- CALL MOVELEFT
- ENDM
-
- LMOV MACRO X,Y,W
- LXI H,X
- LXI D,Y
- LDA W
- CALL MOVELEFT
- ENDM
-
- NEXT MACRO X,Y,W ;; FOR..NEXT
- DCP Y,W
- JP $+10
- INX H
- SHLD Y
- JMP X
- ENDM
-
- NXTI MACRO X,Y,W ;; FOR..NEXT
- DCPI Y,W
- JP $+10
- INX H
- SHLD Y
- JMP X
- ENDM
-
- RESET MACRO F,X,L,M,N ;; RESET(F,X)
- LXI D,F
- LXI H,X
- CALL FFCB
- IF NOT TRS80
- MOVI F+9,L
- MOVI F+10,M
- MOVI F+11,N
- ENDIF
- LXI D,F
- CALL FRESET
- ENDM
-
- REWRT MACRO F,X,L,M,N ;; REWRITE(F,X)
- LXI D,F
- LXI H,X
- CALL FFCB
- IF NOT TRS80
- MOVI F+9,L
- MOVI F+10,M
- MOVI F+11,N
- ENDIF
- LXI D,F
- CALL FREWRT
- ENDM
-
- CLOSE MACRO F ;; CLOSE(F,LOCK)
- LXI D,F
- CALL FCLOS
- ENDM
-
- DELETE MACRO F,X,L,M,N ;; DELETE(F,X)
- LXI D,F
- LXI H,X
- CALL FFCB
- IF NOT TRS80
- MOVI F+9,L
- MOVI F+10,M
- MOVI F+11,N
- ENDIF
- LXI D,F
- CALL FDELE
- ENDM
-
- GTCH MACRO X ;; READ(X)
- CALL FGTCH ;; NO ECHO
- STA X
- ENDM
-
- READ MACRO X ;; READ(X)
- CALL FRDCH ;; W/ ECHO
- STA X
- ENDM
-
- READF MACRO F,X ;; READ(F,X)
- LXI D,F
- CALL FREAD
- STA X
- ENDM
-
- REDLN MACRO X,Y ;; READ(X,Y)
- LXI H,X ;; X=@(BUFFER)
- MVI A,Y ;; Y=S(BUFFER)
- CALL FRDLN
- ENDM
-
- WRITE MACRO X ;; WRITE(X)
- LDA X
- CALL FWTCH
- ENDM
-
- WRITF MACRO F,X ;; WRITE(F,X)
- LXI D,F
- LDA X
- CALL FWRIT
- ENDM
-
- WRTFI MACRO F,X
- LXI D,F
- MVI A,X
- CALL FWRIT
- ENDM
-
- SWRT MACRO F,X ;; WRITE(F,X)
- LXI D,F ;; STRING
- LXI H,X ;; WRITE
- CALL SWRITE
- ENDM
-
- WRTLN MACRO X ;; WRITELN(X)
- LXI H,X
- CALL FWRTLN
- ENDM
-
- GTXY MACRO X,Y ;; GOTOXY(X,Y)
- MVI B,X
- MVI A,Y
- CALL GOTOXY
- ENDM
-
-
-
-