;MEGAMACRO DEFINITIONS .MACRO .AA X,Y,ANGLE .GLOBL .AA .MCALL .MOVF .MOVF X,.AA-4 .MOVF Y,.AA-10 .MOVF ANGLE,.AA-14 CALL .AA .ENDM .MACRO .ABSV A,X .GLOBL .ABSV .MCALL .MOVF MOV A,.ABSV-2 CALL .ABSV .MOVF .ABSV-6,X .ENDM .MACRO .ABSZ Z,F .MCALL .MOVF,.MOVZ .GLOBL .ABSZ .MOVZ Z,.ABSZ-10 CALL .ABSZ .MOVF .ABSZ-14,F .ENDM .MACRO .ACOS Z,ANGLE .GLOBL .ACOS,.CALL .MCALL .MOVF MOV #.,.CALL-2 ;MOVE THIS ADDRESS IN USER'S PROGRAM TO .CALL-2 .MOVF Z,.ACOS-4 CALL .ACOS .MOVF .ACOS-10,ANGLE .ENDM .MACRO .ADDM A,BB,C,L,M,N .GLOBL .ADDM,.CALL MOV #.,.CALL-2 MOV A,.ADDM-2 MOV BB,.ADDM-4 MOV C,.ADDM-6 MOV L,.ADDM-10 .IF NB M MOV M,.ADDM-12 .ENDC .IF B M MOV #1,.ADDM-12 .ENDC .IF NB N MOV N,.ADDM-14 .ENDC .IF B N MOV #1,.ADDM-14 .ENDC CALL .ADDM .ENDM .MACRO .ADDV A,B,C .GLOBL .ADDV MOV A,.ADDV-2 MOV B,.ADDV-4 MOV C,.ADDV-6 CALL .ADDV .ENDM .MACRO .ADDZ Z1,Z2,Z3 .MCALL .MOVZ .GLOBL .ADDZ .MOVZ Z1,.ADDZ-10 .MOVZ Z2,.ADDZ-20 CALL .ADDZ .MOVZ .ADDZ-30,Z3 .ENDM .MACRO .ASIN Z,ANGLE .GLOBL .ASIN,.CALL .MCALL .MOVF MOV #.,.CALL-2 .MOVF Z,.ASIN-4 CALL .ASIN .MOVF .ASIN-10,ANGLE .ENDM .MACRO .AMPL X,Y,S .GLOBL .AMPL,.PAX,.PAY .MCALL .MOVF .IF NB X .MOVF X,.AMPL-4 .ENDC .IF B X .MOVF .PAX,.AMPL-4 .ENDC .IF NB Y .MOVF Y,.AMPL-10 .ENDC .IF B Y .MOVF .PAY,.AMPL-10 .ENDC .IF B S CLR .AMPL-12 .ENDC .IF NB S MOV S,.AMPL-12 .ENDC CALL .AMPL .ENDM .MACRO .AND X,Y .GLOBL .AND,.PAX,.PAY .MCALL .MOVF .IF NB X .MOVF X,.AND-4 .ENDC .IF B X .MOVF .PAX,.AND-4 .ENDC .IF NB Y .MOVF Y,.AND-10 .ENDC .IF B Y .MOVF .PAY,.AND-10 .ENDC CALL .AND .ENDM .MACRO .AR X,Y .GLOBL .AR,.PAX,.PAY .MCALL .MOVF .IF NB X .MOVF X,.AR-4 .ENDC .IF B X .MOVF .PAX,.AR-4 .ENDC .IF NB Y .MOVF Y,.AR-10 .ENDC .IF B Y .MOVF .PAY,.AR-10 .ENDC CALL .AR .ENDM .MACRO .ATAN2 Y,X,ANGLE .GLOBL .ATAN2,.CALL .MCALL .MOVF MOV #.,.CALL-2 .MOVF Y,.ATAN2-4 .MOVF X,.ATAN2-10 CALL .ATAN2 .MOVF .ATAN2-14,ANGLE .ENDM .MACRO .AVDEV X,N,AV,DEV .MCALL .MOVF .GLOBL .AVDEV MOV X,.AVDEV-2 MOV N,.AVDEV-4 CALL .AVDEV .MOVF .AVDEV-10,AV .MOVF .AVDEV-14,DEV .ENDM .MACRO .AXES LABELX,LABELY .GLOBL .AXES MOV LABELX,.AXES-2 CLR .AXES-4 .IF NB LABELY MOV LABELY,.AXES-4 .ENDC CALL .AXES .ENDM .MACRO .AXESQ LABELX,LABELY .GLOBL .AXES .ENABL LSB BR 66$ 65$: .ASCIZ ~LABELX~ .EVEN 66$: MOV #65$,.AXES-2 CLR .AXES-4 .IF NB BR 68$ 67$: .ASCIZ ~LABELY~ .EVEN 68$: MOV #67$,.AXES-4 .ENDC CALL .AXES .DSABL LSB .ENDM .MACRO .BINOM N,M,B .GLOBL .BINOM,.CALL .MCALL .MOVF MOV #.,.CALL MOV N,.BINOM-2 MOV M,.BINOM-4 CALL .BINOM .MOVF .BINOM-10,B .ENDM .MACRO .BOX X,Y .GLOBL .BOX,.PAX,.PAY .MCALL .MOVF .IF NB X .MOVF X,.BOX-4 .ENDC .IF B X .MOVF .PAX,.BOX-4 .ENDC .IF NB Y .MOVF Y,.BOX-10 .ENDC .IF B Y .MOVF .PAY,.BOX-10 .ENDC CALL .BOX .ENDM .MACRO .BUTL1 X,Y,DT,FC ;1st-ORDER LOW-PASS BUTTERWORTH FILTER .MCALL .MOVF .ENABL LSB .MOVF X,91$ TST 65$ ;CALCULATE CONSTANTS INITIALLY BEQ 66$ CLR 65$ .MOVF DT,93$ .MOVF FC,94$ STF R0,-(SP) STF R1,-(SP) LDF 95$,R0 MULF 93$,R0 MULF 94$,R0 ;R0=DT*WC=2*PI*DT*FC LDF #1,R1 ADDF R0,R1 ;R1=1+DTWC DIVF R1,R0 STF R0,75$ ;=Q0=DTWC/(1+DTWC) LDF #1,R0 DIVF R1,R0 STF R0,71$ ;=P1=1/(1+DT*WC) BR 67$ 66$: STF R0,-(SP) STF R1,-(SP) 67$: LDF 71$,R0 ;Y[0]= P1*Y[-1] +Q0*X[0] MULF 81$,R0 LDF 75$,R1 MULF 91$,R1 ADDF R1,R0 STF R0,80$ ;80$=Y[0]=OUTPUT NOW STF R0,81$ ;Y[0] --> Y[-1] LDF (SP)+,R1 LDF (SP)+,R0 .MOVF 80$,Y BR 68$ 65$: .WORD 1 ;CHANGED TO 0 AFTER CONSTANTS CALCULATED 71$: .BLKW 2 ;P1 75$: .BLKW 2 ;Q0 80$: .BLKW 2 ;Y[0]=OUTPUT NOW 81$: .FLT2 0 ;Y[-1] 91$: .FLT2 0 ;X 93$: .FLT2 0 ;DT 94$: .FLT2 0 ;FC 95$: .FLT2 6.2831853 ;2*PI 68$: .DSABL LSB .ENDM .MACRO .BUTL2 X,Y,DT,FC ;2nd ORDER LOW-PASS BUTTERWORTH FILTERING OF X TO GIVE Y. SEE BUTEST.MAC. ;X = INPUT; Y = OUTPUT; DT = DIGITIZING INTERVAL; FC = CUTOFF FREQ. IN Hz .MCALL .MOVF .ENABL LSB .MOVF X,91$ TST 65$ BEQ 98$ CLR 65$ .MOVF DT,93$ .MOVF FC,94$ STF R0,-(SP) STF R1,-(SP) STF R2,-(SP) LDF FC,R0 ;INITIALIZE CONSTANTS MULF 68$,R0 ;R0=WC=2*PI*FC MULF DT,R0 ;R0=WC*DT LDF 69$,R1 ;DENOM=1+SQRT(2)*WCDT+WCDT**2 MULF R0,R1 LDF R0,R2 MULF R2,R2 ADDF R2,R1 ADDF #1,R1 STF R1,70$ LDF 69$,R1 ;P1=(2 + SQRT(2)*WCDT)/DENOM MULF R0,R1 ADDF #2,R1 DIVF 70$,R1 STF R1,71$ LDF #-1,R1 ;P2=-1/DENOM DIVF 70$,R1 STF R1,72$ MULF R0,R0 ;Q0=WCDT**2/DENOM DIVF 70$,R0 STF R0,73$ LDF (SP)+,R2 BR 97$ 98$: STF R0,-(SP) STF R1,-(SP) 97$: LDF 91$,R0 ;Y[0]=P1*Y[-1] + P2*Y[-2] + Q0*X[0] MULF 73$,R0 LDF 71$,R1 MULF 81$,R1 ADDF R1,R0 LDF 72$,R1 MULF 82$,R1 ADDF R1,R0 STF R0,92$ ;=Y[0] LDF 81$,R1 ;STEP AHEAD IN TIME: Y[-1] --> Y[-2] STF R1,82$ STF R0,81$ ;Y[0] --> Y[-1] LDF (SP)+,R1 LDF (SP)+,R0 .MOVF 92$,Y BR 99$ 65$: .WORD 1 ;CLEARED AFTER INITIAL CONSTANTS COMPUTED 66$: .FLT2 0 ;Y[-1] 67$: .FLT2 0 ;Y[-2] 68$: .FLT2 6.2831853 ;2*PI 69$: .FLT2 1.4142136 ;SQRT(2) 70$: .BLKW 2 ;DENOM 71$: .BLKW 2 ;P1 72$: .BLKW 2 ;P2 73$: .BLKW 2 ;B0 81$: .FLT2 0 ;Y[N-1] 82$: .FLT2 0 ;Y[N-2] 91$: .BLKW 2 ;X[0] 92$: .BLKW 2 ;Y[0], THE OUTPUT 93$: .BLKW 2 ;DT 94$: .BLKW 2 ;FC 99$: .DSABL LSB .ENDM .MACRO .BUTL4 X,Y,DT,FC ;4TH-ORDER LOW-PASS BUTTERWORTH FILTER .MCALL .MOVF .ENABL LSB .MOVF X,90$ TST 65$ ;CALCULATE CONSTANTS INITIALLY BEQ 66$ CLR 65$ .MOVF DT,93$ .MOVF FC,94$ STF R0,-(SP) STF R1,-(SP) STF R2,-(SP) SETD ;DOUBLE PRECISION IS NECESSARY LDD 95$,R0 ;R0=DT*WC=DTWC=2*PI*DT*FC MULD 93$,R0 MULD 94$,R0 ;DENOM = 1 + 2.613126*DTWC + 3.4142137*DTWC**2 + 2.613126*DTWC**3 + DTWC**4 LDD R0,R1 ADDD 96$,R1 MULD R0,R1 ADDD 97$,R1 MULD R0,R1 ADDD 96$,R1 MULD R0,R1 ADDD #1,R1 ;=DENOM ;P1 = (4 + 7.839378*DTWC + 6.8284274*DTWC**2 + 2.613126*DTWC**3)/DENOM LDD R0,R2 MULD 96$,R2 ADDD 99$,R2 MULD R0,R2 ADDD 98$,R2 MULD R0,R2 ADDD #4,R2 DIVD R1,R2 STD R2,71$ LDD R0,R2 ;P2 = (-6 - 7.839378*DTWC - 3.4142137*DTWC**2)/DENOM MULD 97$,R2 ADDD 98$,R2 MULD R0,R2 ADDD #6,R2 NEGD R2 DIVD R1,R2 STD R2,72$ ;=P2 LDD R0,R2 ;P3 = (4 + 2.613126*DTWC)/DENOM MULD 96$,R2 ADDD #4,R2 DIVD R1,R2 STD R2,73$ ;=P3 LDD #-1,R2 ;P4 = -1/DENOM DIVD R1,R2 STD R2,74$ MULD R0,R0 ;Q0 = DTWC**4/DENOM MULD R0,R0 DIVD R1,R0 STD R0,75$ SETF LDF (SP)+,R2 BR 67$ 66$: STF R0,-(SP) STF R1,-(SP) 67$: SETD LDD 71$,R0 ;Y[0]= P1*Y[-1] +P2*Y[-2] +P3*Y[-3] +P4*Y[-4] +Q0*X[0] MULD 81$,R0 LDD 72$,R1 MULD 82$,R1 ADDD R1,R0 LDD 73$,R1 MULD 83$,R1 ADDD R1,R0 LDD 74$,R1 MULD 84$,R1 ADDD R1,R0 LDD 75$,R1 MULD 90$,R1 ADDD R1,R0 ;R0=Y[0] LDD 83$,R1 ;Y[-3] --> Y[-4] STD R1,84$ LDD 82$,R1 ;Y[-2] --> Y[-3] STD R1,83$ LDD 81$,R1 ;Y[-1] --> Y[-2] STD R1,82$ STD R0,81$ ;Y[0] --> Y[-1] SETF STF R0,80$ LDF (SP)+,R1 LDF (SP)+,R0 .MOVF 80$,Y BR 68$ 65$: .WORD 1 ;CHANGED TO 0 AFTER CONSTANTS CALCULATED 71$: .BLKW 4 ;P1 72$: .BLKW 4 ;P2 73$: .BLKW 4 ;P3 74$: .BLKW 4 ;P4 75$: .BLKW 4 ;Q0 80$: .BLKW 2 ;Y[0]=OUTPUT NOW 81$: .FLT4 0 ;Y[-1] 82$: .FLT4 0 ;Y[-2] 83$: .FLT4 0 ;Y[-3] 84$: .FLT4 0 ;Y[-4] 90$: .FLT4 0 ;X 93$: .FLT4 0 ;DT 94$: .FLT4 0 ;FC 95$: .FLT4 6.2831853 ;2*PI 96$: .FLT4 2.613126 ;SQRT(2-SQRT(2)) + SQRT(2+SQRT(2)) 97$: .FLT4 3.4142137 ;SQRT(2-SQRT(2)) * SQRT(2+SQRT(2)) 98$: .FLT4 7.839378 ;3*2.613126 99$: .FLT4 6.8284274 ;2*3.4142137 68$: .DSABL LSB .ENDM .MACRO .BUTH1 X,Y,DT,FC ;1st-ORDER HIGH-PASS BUTTERWORTH .MCALL .MOVF .ENABL LSB .MOVF X,90$ TST 65$ ;CALCULATE CONSTANTS INITIALLY BEQ 66$ CLR 65$ .MOVF DT,93$ .MOVF FC,94$ STF R0,-(SP) LDF 95$,R0 MULF 93$,R0 MULF 94$,R0 ;R0=DT*WC=2*PI*DT*FC ADDF #1,R0 STF R0,71$ ;R1=DENOM=1+DTWC BR 67$ 66$: STF R0,-(SP) 67$: LDF 81$,R0 ;Y[0]= (Y[-1] + X[0] - X[-1])/DENOM ADDF 90$,R0 SUBF 91$,R0 DIVF 71$,R0 STF R0,80$ ;80$=Y[0]=OUTPUT NOW STF R0,81$ ;Y[0] --> Y[-1] LDF 90$,R0 ;X[0] --> X[-1] STF R0,91$ LDF (SP)+,R0 .MOVF 80$,Y BR 68$ 65$: .WORD 1 ;CHANGED TO 0 AFTER CONSTANTS CALCULATED 71$: .BLKW 4 ;DENOM=1+DT*WC 80$: .BLKW 2 ;Y[0]=OUTPUT NOW 81$: .FLT2 0 ;Y[-1] 90$: .FLT2 0 ;X[0] 91$: .FLT2 0 ;X[-1] 93$: .FLT2 0 ;DT 94$: .FLT2 0 ;FC 95$: .FLT2 6.2831853 ;2*PI 68$: .DSABL LSB .ENDM .MACRO .C X,Y,P .GLOBL .C,.PAX,.PAY .MCALL .MOVF .IF NB X .MOVF X,.C-4 .ENDC .IF B X .MOVF .PAX,.C-4 .ENDC .IF NB Y .MOVF Y,.C-10 .ENDC .IF B Y .MOVF .PAY,.C-10 .ENDC .IF B P CLR .C-12 .ENDC .IF NB P MOV #1,.C-12 .ENDC CALL .C .ENDM .MACRO .CAPS S .GLOBL .CAPS MOV S,.CAPS-2 CALL .CAPS .ENDM .MACRO .CD N .GLOBL .CD .IF B N MOV #1,.CD-2 .ENDC .IF NB N MOV N,.CD-2 .ENDC CALL .CD .ENDM .MACRO .CI RADIUS .GLOBL .CI .MCALL .MOVF .MOVF RADIUS,.CI-4 CALL .CI .ENDM .MACRO .CL N .GLOBL .CL .IF B N MOV #1,.CL-2 .ENDC .IF NB N MOV N,.CL-2 .ENDC CALL .CL .ENDM .MACRO .CLOS0 .GLOBL .CLOS0,.CALL MOV #.,.CALL-2 CALL .CLOS0 .ENDM .MACRO .CLOS1 .GLOBL .CLOS1,.CALL MOV #.,.CALL-2 CALL .CLOS1 .ENDM .MACRO .CLOS2 .GLOBL .CLOS2,.CALL MOV #.,.CALL-2 CALL .CLOS2 .ENDM .MACRO .CLOS3 .GLOBL .CLOS3,.CALL MOV #.,.CALL-2 CALL .CLOS3 .ENDM .MACRO .CLRM A,L,M,N .GLOBL .CLRM,.CALL MOV #.,.CALL-2 MOV A,.CLRM-2 MOV L,.CLRM-4 .IF NB M MOV M,.CLRM-6 .ENDC .IF B M MOV #1,.CLRM-6 .ENDC .IF NB N MOV N,.CLRM-10 .ENDC .IF B N MOV #1,.CLRM-10 .ENDC CALL .CLRM .ENDM .MACRO .CLRV A .GLOBL .CLRV MOV A,.CLRV-2 CALL .CLRV .ENDM .MACRO .CLRZ Z SETD CLRD Z SETF .ENDM .MACRO .CMOV ROW,COLUMN .GLOBL .CMOV MOV ROW,.CMOV-2 MOV COLUMN,.CMOV-4 CALL .CMOV .ENDM .MACRO .CMPL L1,L2 .MCALL .MOVF .GLOBL .CMPL .MOVF L1,.CMPL-4 .MOVF L2,.CMPL-10 CALL .CMPL .ENDM .MACRO .CMPS A,B .GLOBL .CMPS MOV A,.CMPS-2 MOV B,.CMPS-4 CALL .CMPS .ENDM .MACRO .CNEX ;MOVE CURSOR TO BEGINNING OF NEXT LINE .MCALL .TTYOUT MOV R0,-(SP) .TTYOUT #33 .TTYOUT #105 MOV (SP)+,R0 .ENDM .MACRO .COMBS A,B,C .GLOBL .COMBS MOV A,.COMBS-2 MOV B,.COMBS-4 MOV C,.COMBS-6 CALL .COMBS .ENDM .MACRO .COS ANGLE,Z .MCALL .MOVF .GLOBL .COS .MOVF ANGLE,.COS-4 CALL .COS .MOVF .COS-10,Z .ENDM .MACRO .CPOS ROW,COL,B .GLOBL .CPOS CALL .CPOS MOV .CPOS-2,ROW MOV .CPOS-4,COL MOVB .CPOS-6,B .ENDM .MACRO .CR N .GLOBL .CR .IF B N MOV #1,.CR-2 .ENDC .IF NB N MOV N,.CR-2 .ENDC CALL .CR .ENDM .MACRO .CRD X,Y .GLOBL .CRD,.PAX,.PAY .MCALL .MOVF .IF NB X .MOVF X,.CRD-4 .ENDC .IF B X .MOVF .PAX,.CRD-4 .ENDC .IF NB Y .MOVF Y,.CRD-10 .ENDC .IF B Y .MOVF .PAY,.CRD-10 .ENDC CALL .CRD .ENDM .MACRO .CROSV A,B,C .GLOBL .CROSV MOV A,.CROSV-2 MOV B,.CROSV-4 MOV C,.CROSV-6 CALL .CROSV .ENDM .MACRO .CU N .GLOBL .CU .IF B N MOV #1,.CU-2 .ENDC .IF NB N MOV N,.CU-2 .ENDC CALL .CU .ENDM .MACRO .CVFS F,S .GLOBL .CVFS .MCALL .MOVF .MOVF F,.CVFS-4 MOV S,.CVFS-6 CALL .CVFS .ENDM .MACRO .CVIS I,S,R .GLOBL .CVIS MOV I,.CVIS-2 MOV S,.CVIS-4 MOV R,.CVIS-6 CALL .CVIS .ENDM .MACRO .CVL2S L,S .GLOBL .CVL2S .MCALL .MOVF .MOVF L,.CVL2S-4 MOV S,.CVL2S-6 CALL .CVL2S .ENDM .MACRO .CVL8S L,S .GLOBL .CVL8S .MCALL .MOVF .MOVF L,.CVL8S-4 MOV S,.CVL8S-6 CALL .CVL8S .ENDM .MACRO .CVSF S,F .GLOBL .CVSF .MCALL .MOVF MOV S,.CVSF-2 CALL .CVSF .MOVF .CVSF-6,F .ENDM .MACRO .CVSI S,I,R .GLOBL .CVSI MOV S,.CVSI-2 MOV R,.CVSI-6 CALL .CVSI MOV .CVSI-4,I .ENDM .MACRO .CVSL2 S,L .GLOBL .CVSL2 .MCALL .MOVF MOV S,.CVSL2-2 CALL .CVSL2 .MOVF .CVSL2-6,L .ENDM .MACRO .CVSL8 S,L .GLOBL .CVSL8 .MCALL .MOVF MOV S,.CVSL8-2 CALL .CVSL8 .MOVF .CVSL8-6,L .ENDM .MACRO .D X,Y .GLOBL .D,.PAX,.PAY .MCALL .MOVF .IF NB X .MOVF X,.D-4 .ENDC .IF B X .MOVF .PAX,.D-4 .ENDC .IF NB Y .MOVF Y,.D-10 .ENDC .IF B Y .MOVF .PAY,.D-10 .ENDC CALL .D .ENDM .MACRO .DASH X,Y .GLOBL .DASH,.PAX,.PAY .MCALL .MOVF .IF NB X .MOVF X,.DASH-4 .ENDC .IF B X .MOVF .PAX,.DASH-4 .ENDC .IF NB Y .MOVF Y,.DASH-10 .ENDC .IF B Y .MOVF .PAY,.DASH-10 .ENDC CALL .DASH .ENDM .MACRO .DAY S .GLOBL .DAY MOV S,.DAY-2 CALL .DAY .ENDM .MACRO .DELAY X,Y,N ;OUTPUT Y (REAL) EQUALS INPUT X DELAYED BY N STEPS, WHICH MUST BE AN INTEGER ;(OR A SYMBOL EQUALLY AN INTEGER), BECAUSE N REAL LOCATIONS ARE RESERVED. ; WRONG: .DELAY X,Y,#5 ; RIGHT: .DELAY X,Y,5 .MCALL .MOVF ;THE INSTRUCTION .DELAY X,X,5 IS LEGAL. .ENABL LSB ;THE SIGNAL FOR T < 0 IS ASSUMED ZERO. .MOVF X,66$ .MOVF @99$,Y .MOVF 66$,@99$ ADD #4,99$ CMP 99$,#4*N+70$ ;PAST END OF BUFFER? BLT 67$ MOV #70$,99$ ;GO TO START OF RING BUFFER 67$: JMP 65$ 66$: .BLKW 2 ;X 70$: .REPT N .FLT2 0 ;RING BUFFER .ENDR 99$: .WORD 70$ ;START AT BEGINNING OF RING BUFFER 65$: .DSABL LSB .ENDM .MACRO .DETM M,N,DET .GLOBL .DETM,.CALL .MCALL .MOVF MOV #.,.CALL-2 MOV M,.DETM-2 MOV N,.DETM-4 CALL .DETM .MOVF .DETM-10,DET .ENDM .MACRO .DI ANGLE .GLOBL .DI .MCALL .MOVF .MOVF ANGLE,.DI-4 CALL .DI .ENDM .MACRO .DIVZ Z1,Z2,Z3 .GLOBL .DIVZ .MCALL .MOVZ .MOVZ Z1,.DIVZ-10 .MOVZ Z2,.DIVZ-20 CALL .DIVZ .MOVZ .DIVZ-30,Z3 .ENDM .MACRO .DOTV A,B,X .GLOBL .DOTV .MCALL .MOVF MOV A,.DOTV-2 MOV B,.DOTV-4 CALL .DOTV .MOVF .DOTV-10,X .ENDM .MACRO .DWL .MCALL .TTYOUT MOV R0,-(SP) .TTYOUT #33 .TTYOUT #43 .TTYOUT #66 MOV (SP)+,R0 .ENDM .MACRO .E ;ERASE SCREEN, BUT NOT GRAPH .MCALL .PRINT .ENABL LSB MOV R0,-(SP) .PRINT #65$ BR 66$ 65$: .BYTE 33,133,62,112 ;ESC [ 2 J ERASE DISPLAY .BYTE 33,133,66,57 ;ESC [6/ RESET MODE DECOM (DEC ORIGIN MODE) .BYTE 33,133,62,64,73,61,110,200 ;ESC [24;1H 200 66$: MOV (SP)+,R0 ;CURSOR POSITION TO (24,1) .DSABL LSB ;200 SUPPRESSES CR-LF .ENDM .MACRO .EL ;ERASE LINE WHERE CURSOR IS .MCALL .PRINT .ENABL LSB MOV R0,-(SP) .PRINT #66$ BR 65$ 66$: .BYTE 33,133,62,113 ;ESC [2K ERASE ALL OF LINE .BYTE 33,133,71,71,104,200 ;ESC [99D CURSOR LEFT 99 PLACES 65$: MOV (SP)+,R0 .DSABL LSB .ENDM .MACRO .ELL ;ERASE LINE UNDER & LEFT OF CURSOR .MCALL .PRINT .ENABL LSB MOV R0,-(SP) .PRINT #66$ BR 65$ 66$: .BYTE 33,133,61,113 ;ESC [1K ERASE LINE LEFT OF CURSOR .BYTE 33,133,71,71,104,200 ;ESC [99D 200 CURSOR LEFT 99 PLACES 65$: MOV (SP)+,R0 .DSABL LSB .ENDM .MACRO .ELR ;ERASE LINE UNDER & TO RIGHT OF CURSOR .MCALL .PRINT .ENABL LSB MOV R0,-(SP) .PRINT #66$ BR 65$ 66$: .BYTE 33,133,60,113 ;ESC [0K ERASE LINE RIGHT OF CURSOR .BYTE 33,133,71,71,104,200 ;ESC [99D 200 CURSOR LEFT 99 PLACES 65$: MOV (SP)+,R0 .DSABL LSB .ENDM .MACRO .EQSM A,BB,N .GLOBL .EQSM,.CALL MOV #.,.CALL-2 MOV A,.EQSM-2 MOV BB,.EQSM-4 MOV N,.EQSM-6 CALL .EQSM .ENDM .MACRO .EQSZ A,BB,N .GLOBL .EQSZ,.CALL MOV #.,.CALL-2 MOV A,.EQSZ-2 MOV BB,.EQSZ-4 MOV N,.EQSZ-6 CALL .EQSZ .ENDM .MACRO .ERR X,Y .GLOBL .ERR .MCALL .MOVF .MOVF X,.ERR-4 CALL .ERR .MOVF .ERR-10,Y .ENDM .MACRO .EXP X,Y .GLOBL .EXP,.CALL .MCALL .MOVF MOV #.,.CALL-2 .MOVF X,.EXP-4 CALL .EXP .MOVF .EXP-10,Y .ENDM .MACRO .EXPZ Z1,Z2 .GLOBL .EXPZ,.CALL .MCALL .MOVZ MOV #.,.CALL-2 .MOVZ Z1,.EXPZ-10 CALL .EXPZ .MOVZ .EXPZ-20,Z2 .ENDM .MACRO .FACT I,F .GLOBL .FACT,.CALL .MCALL .MOVF MOV #.,.CALL-2 MOV I,.FACT-2 CALL .FACT .MOVF .FACT-6,F .ENDM .MACRO .FFT Z,LAYER,SIGN .GLOBL .FFT MOV Z,.FFT-2 MOV LAYER,.FFT-4 MOV SIGN,.FFT-6 CALL .FFT .ENDM .MACRO .FILL LOX,LOY,HIX,HIY,F .GLOBL .FILL .MCALL .MOVF .MOVF LOX,.FILL-4 .MOVF LOY,.FILL-10 .MOVF HIX,.FILL-14 .MOVF HIY,.FILL-20 MOV F,.FILL-22 CALL .FILL .ENDM .MACRO .FINDS A,B,ADDR .GLOBL .FINDS MOV A,.FINDS-2 MOV B,.FINDS-4 CALL .FINDS MOV .FINDS-6,ADDR .ENDM .MACRO .FPERR .GLOBL .FPERR CALL .FPERR .ENDM .MACRO .FUSE X,Y .GLOBL .FUSE,.PAX,.PAY .MCALL .MOVF .IF NB X .MOVF X,.FUSE-4 .ENDC .IF B X .MOVF .PAX,.FUSE-4 .ENDC .IF NB Y .MOVF Y,.FUSE-10 .ENDC .IF B Y .MOVF .PAY,.FUSE-10 .ENDC CALL .FUSE .ENDM .MACRO .G .GLOBL .G CALL .G .ENDM .MACRO .GAMMA P,Y .GLOBL .GAMMA,.CALL .MCALL .MOVF MOV #.,.CALL-2 .MOVF P,.GAMMA-4 CALL .GAMMA .MOVF .GAMMA-10,Y .ENDM .MACRO .GRID .GLOBL .GRID CALL .GRID .ENDM .MACRO .GTCR X,Y,B .GLOBL .GTCR CALL .GTCR MOV .GTCR-2,X MOV .GTCR-4,Y MOVB .GTCR-6,B .ENDM .MACRO .GTE .GLOBL .GTE CALL .GTE .ENDM .MACRO .GTP X,Y .GLOBL .GTP MOV X,.GTP-2 MOV Y,.GTP-4 CALL .GTP .ENDM .MACRO .GTV X,Y .GLOBL .GTV MOV X,.GTV-2 MOV Y,.GTV-4 CALL .GTV .ENDM .MACRO .INVM A,AI,N .GLOBL .INVM,.CALL MOV #.,.CALL-2 MOV A,.INVM-2 MOV AI,.INVM-4 MOV N,.INVM-6 CALL .INVM .ENDM .MACRO .J X,Y .GLOBL .J,.PAX,.PAY .MCALL .MOVF .IF NB X .MOVF X,.J-4 .ENDC .IF B X .MOVF .PAX,.J-4 .ENDC .IF NB Y .MOVF Y,.J-10 .ENDC .IF B Y .MOVF .PAY,.J-10 .ENDC CALL .J .ENDM .MACRO .K2 I .GLOBL .KINT MOV #2.,.KINT-4 CALL .KINT MOV .KINT-2,I .ENDM .MACRO .K8 I .GLOBL .KINT MOV #8.,.KINT-4 CALL .KINT MOV .KINT-2,I .ENDM .MACRO .K10 I .GLOBL .KINT MOV #10.,.KINT-4 CALL .KINT MOV .KINT-2,I .ENDM .MACRO .KB BB .MCALL .TTYIN .ENABL LSB MOV R0,-(SP) BR 66$ 65$: .BLKW 1 66$: .TTYIN 65$ MOV (SP)+,R0 MOVB 65$,BB .ENDM .MACRO .KF F .MCALL .MOVF .GLOBL .KF CALL .KF .MOVF .KF-4,F .ENDM .MACRO .KL S ;SAME AS .KS .MCALL .GTLIN,.TTYOUT BR .+4 .ZYX=. .BLKW 1 MOV S,.ZYX MOV R0,-(SP) ;.GTLIN USES R0 .TTYOUT #'K .TTYOUT #'L .TTYOUT #': .GTLIN .ZYX MOV (SP)+,R0 .ENDM .MACRO .KL2 L .GLOBL .KL2 .MCALL .MOVF CALL .KL2 .MOVF .KL2-4,L .ENDM .MACRO .KL8 L .GLOBL .KL8 .MCALL .MOVF CALL .KL8 .MOVF .KL8-4,L .ENDM .MACRO .KM A,L,M,N .GLOBL .KM,.CALL MOV #.,.CALL-2 MOV A,.KM-2 MOV L,.KM-4 .IF NB M MOV M,.KM-6 .ENDC .IF B M MOV #1,.KM-6 .ENDC .IF NB N MOV N,.KM-10 .ENDC .IF B N MOV #1,.KM-10 .ENDC CALL .KM .ENDM .MACRO .KPN ;MAKE KEYPAD KEYS TRANSMIT NORMAL CHARACTERS SHOWN ON KEYS .MCALL .TTYOUT MOV R0,-(SP) .TTYOUT #33 ;ESC .TTYOUT #76 ;> MOV R0,-(SP) .ENDM .MACRO .KPS ;MAKE KEYPAD KEYS TRANSMIT SPECIAL EDITTING CHARACTERS .MCALL .TTYOUT MOV R0,-(SP) .TTYOUT #33 ;ESC .TTYOUT #75 ;= MOV R0,-(SP) .ENDM .MACRO .KS S ;SAME AS .KL .MCALL .GTLIN,.TTYOUT BR .+4 .ZYX=. .BLKW 1 MOV S,.ZYX MOV R0,-(SP) ;.GTLIN USES R0 .TTYOUT #'K .TTYOUT #'L .TTYOUT #': .GTLIN .ZYX MOV (SP)+,R0 .ENDM .MACRO .KZ Z .MCALL .MOVZ .GLOBL .KZ CALL .KZ .MOVZ .KZ-10,Z .ENDM .MACRO .L X,Y .GLOBL .L,.PAX,.PAY .MCALL .MOVF .IF NB X .MOVF X,.L-4 .ENDC .IF B X .MOVF .PAX,.L-4 .ENDC .IF NB Y .MOVF Y,.L-10 .ENDC .IF B Y .MOVF .PAY,.L-10 .ENDC CALL .L .ENDM .MACRO .LBF X .GLOBL .LBF .MCALL .MOVF .MOVF X,.LBF-4 CALL .LBF .ENDM .MACRO .LBL S .GLOBL .LBL MOV S,.LBL-2 CALL .LBL .ENDM .MACRO .LBLQ S .GLOBL .LBL .ENABL LSB MOV #65$,.LBL-2 CALL .LBL BR 66$ 65$: .ASCIZ ~S~ .EVEN 66$: .DSABL LSB .ENDM .MACRO .LBS S .GLOBL .LBS MOV S,.LBS-2 CALL .LBS .ENDM .MACRO .LBSQ S .GLOBL .LBS .ENABL LSB MOV #65$,.LBS-2 CALL .LBS BR 66$ 65$: .ASCIZ ~S~ .EVEN 66$: .DSABL LSB .ENDM .MACRO .LED X,Y .GLOBL .LED,.PAX,.PAY .MCALL .MOVF .IF NB X .MOVF X,.LED-4 .ENDC .IF B X .MOVF .PAX,.LED-4 .ENDC .IF NB Y .MOVF Y,.LED-10 .ENDC .IF B Y .MOVF .PAY,.LED-10 .ENDC CALL .LED .ENDM .MACRO .LN X,Y .GLOBL .LN,.CALL .MCALL .MOVF MOV #.,.CALL-2 .MOVF X,.LN-4 CALL .LN .MOVF .LN-10,Y .ENDM .MACRO .LOG X,Y .MCALL .MOVF .GLOBL .LOG,.CALL MOV #.,.CALL-2 .MOVF X,.LOG-4 CALL .LOG .MOVF .LOG-10,Y .ENDM .MACRO .LOG2 X,Y .MCALL .MOVF .GLOBL .LOG2,.CALL MOV #.,.CALL-2 .MOVF X,.LOG2-4 CALL .LOG2 .MOVF .LOG2-10,Y .ENDM .MACRO .LONGS S,L .GLOBL .LONGS MOV S,.LONGS-2 CALL .LONGS MOV .LONGS-4,L .ENDM .MACRO .MIN F,XLO,XHI,XMIN,I .GLOBL .MIN .MCALL .MOVF MOV F,.MIN-2 .MOVF XLO,.MIN-6 .MOVF XHI,.MIN-12 .IF B I MOV #20.,.MIN-20 ;DEFAULT=20 ITERATIONS .ENDC .IF NB I MOV I,.MIN-20 .ENDC CALL .MIN .MOVF .MIN-16,XMIN .ENDM .MACRO .MONTE F,INTEG,N,LO1,HI1,LO2,HI2,LO3,HI3,LO4,HI4,LO5,HI5,LO6,HI6 .GLOBL .MONTE .MCALL .MOVF MOV F,.MONTE-2 MOV N,.MONTE-10 .MOVF LO1,.MONTE-14 .MOVF HI1,.MONTE-20 MOV #1,.MONTE-72 .IF NB LO2 .MOVF LO2,.MONTE-24 .MOVF HI2,.MONTE-30 MOV #2,.MONTE-72 .IF NB LO3 .MOVF LO3,.MONTE-34 .MOVF HI3,.MONTE-40 MOV #3,.MONTE-72 .IF NB LO4 .MOVF LO4,.MONTE-44 .MOVF HI4,.MONTE-50 MOV #4,.MONTE-72 .IF NB LO5 .MOVF LO5,.MONTE-54 .MOVF HI5,.MONTE-60 MOV #5,.MONTE-72 .IF NB LO6 .MOVF LO6,.MONTE-64 .MOVF HI6,.MONTE-70 MOV #6,.MONTE-72 .ENDC .ENDC .ENDC .ENDC .ENDC CALL .MONTE .MOVF .MONTE-6,INTEG .ENDM .MACRO .MOVBT A,NA,B,NB,NBITS .GLOBL .MOVBT MOV A,.MOVBT-2 MOV NA,.MOVBT-4 MOV B,.MOVBT-6 MOV NB,.MOVBT-10 MOV NBITS,.MOVBT-12 CALL .MOVBT .ENDM .MACRO .MOVF F,G .MOVF1=0 .IF IDN G,A0 .MOVF1=1 ;.MOVF1=1 MEANS G IS ACCUM R0..R3 .ENDC .IF IDN G,A1 .MOVF1=1 .ENDC .IF IDN G,A2 .MOVF1=1 .ENDC .IF IDN G,A3 .MOVF1=1 .ENDC .IF IDN G,R0 .MOVF1=1 .ENDC .IF IDN G,R1 .MOVF1=1 .ENDC .IF IDN G,R2 .MOVF1=1 .ENDC .IF IDN G,R3 .MOVF1=1 .ENDC .IF GT .MOVF1 LDF F,G ;G IS ACCUM .ENDC ;---IF .MOVF1 = 0, THEN G IS NOT ACCUM .IF EQ .MOVF1 ;IS F ACCUM? .MOVF2=0 .IF IDN F,A0 .MOVF2=1 ;.MOVF2=1 MEANS F IS ACCUM R0-R3 .ENDC .IF IDN F,A1 .MOVF2=1 .ENDC .IF IDN F,A2 .MOVF2=1 .ENDC .IF IDN F,A3 .MOVF2=1 .ENDC .IF IDN F,R0 .MOVF2=1 .ENDC .IF IDN F,R1 .MOVF2=1 .ENDC .IF IDN F,R2 .MOVF2=1 .ENDC .IF IDN F,R3 .MOVF2=1 .ENDC .IF GT .MOVF2 STF F,G ;F IS ACCUM R0-3 .ENDC .IF EQ .MOVF2 ;NEITHER F NOR G ARE ACCUM BR .+6 .MOVFF=. .BLKW 2 STF R0,.MOVFF LDF F,R0 STF R0,G LDF .MOVFF,R0 .ENDC .ENDC .ENDM .MACRO .MOVM A,BB,L,M,N .GLOBL .MOVM,.CALL MOV #.,.CALL-2 MOV A,.MOVM-2 MOV BB,.MOVM-4 MOV L,.MOVM-6 .IF NB M MOV M,.MOVM-10 .ENDC .IF B M MOV #1,.MOVM-10 .ENDC .IF NB N MOV N,.MOVM-12 .ENDC .IF B N MOV #1,.MOVM-12 .ENDC CALL .MOVM .ENDM .MACRO .MOVS A,B .GLOBL .MOVS MOV A,.MOVS-2 MOV B,.MOVS-4 CALL .MOVS .ENDM .MACRO .MOVV A,B .GLOBL .MOVV MOV A,.MOVV-2 MOV B,.MOVV-4 CALL .MOVV .ENDM .MACRO .MOVZ Z1,Z2 SETD .ENABL LSB BR 66$ 65$: .BLKW 4 66$: STD R0,65$ LDD Z1,R0 STD R0,Z2 LDD 65$,R0 SETF .ENDM .MACRO .MULM A,I,J,K,B,L,M,N,C .GLOBL .MULM,.CALL MOV #.,.CALL-2 MOV A,.MULM-2 ;ORDER IS DIFFERENT THAN USUAL MOV B,.MULM-4 MOV C,.MULM-6 MOV I,.MULM-22 MOV J,.MULM-20 MOV K,.MULM-16 MOV L,.MULM-14 MOV M,.MULM-12 MOV N,.MULM-10 CALL .MULM .ENDM .MACRO .MULV A,X,B .GLOBL .MULV .MCALL .MOVF MOV A,.MULV-2 .MOVF X,.MULV-6 MOV B,.MULV-10 CALL .MULV .ENDM .MACRO .MULZ Z1,Z2,Z3 .GLOBL .MULZ .MCALL .MOVZ .MOVZ Z1,.MULZ-10 .MOVZ Z2,.MULZ-20 CALL .MULZ .MOVZ .MULZ-30,Z3 .ENDM .MACRO .NAND X,Y .GLOBL .NAND,.PAX,.PAY .MCALL .MOVF .IF NB X .MOVF X,.NAND-4 .ENDC .IF B X .MOVF .PAX,.NAND-4 .ENDC .IF NB Y .MOVF Y,.NAND-10 .ENDC .IF B Y .MOVF .PAY,.NAND-10 .ENDC CALL .NAND .ENDM .MACRO .NOR X,Y .GLOBL .NOR,.PAX,.PAY .MCALL .MOVF .IF NB X .MOVF X,.NOR-4 .ENDC .IF B X .MOVF .PAX,.NOR-4 .ENDC .IF NB Y .MOVF Y,.NOR-10 .ENDC .IF B Y .MOVF .PAY,.NOR-10 .ENDC CALL .NOR .ENDM .MACRO .NORM X,Y .GLOBL .NORM .MCALL .MOVF .MOVF X,.NORM-4 CALL .NORM .MOVF .NORM-10,Y .ENDM .MACRO .NPN EX,EY,CX,CY .GLOBL .TRANS .MCALL .MOVF .MOVF EX,.TRANS-4 .MOVF EY,.TRANS-10 .MOVF CX,.TRANS-14 .MOVF CY,.TRANS-20 CLR .TRANS-22 CALL .TRANS .ENDM .MACRO .OA X,Y,DOWN .GLOBL .OA .MCALL .MOVF CALL .OA .MOVF .OA-4,X .MOVF .OA-10,Y MOV .OA-12,DOWN .ENDM .MACRO .OFSET N,I,DI,J,DJ,K,DK ;N=((I*DJ+J)*DK+K)*4 .ENABL LSB ;DI NOT USED MOV I,65$ .IF NB J MOV J,65$+2 MOV DJ,65$+4 .IF NB K MOV K,65$+6 MOV DK,65$+10 .ENDC .ENDC MOV R1,-(SP) MOV 65$,R1 .IF NB J MUL 65$+4,R1 ADD 65$+2,R1 .IF NB K MUL 65$+10,R1 ADD 65$+6,R1 .ENDC .ENDC ASH #2,R1 MOV R1,65$ BR 66$ 65$: .BLKW 1 ;I OR N .BLKW 1 ;J .BLKW 1 ;DJ .BLKW 1 ;K .BLKW 1 ;DK 66$: MOV (SP)+,R1 MOV 65$,N .DSABL LSB .ENDM .MACRO .OR X,Y .GLOBL .OR,.PAX,.PAY .MCALL .MOVF .IF NB X .MOVF X,.OR-4 .ENDC .IF B X .MOVF .PAX,.OR-4 .ENDC .IF NB Y .MOVF Y,.OR-10 .ENDC .IF B Y .MOVF .PAY,.OR-10 .ENDC CALL .OR .ENDM .MACRO .P2 I .GLOBL .PINT MOV I,.PINT-2 MOV #2,.PINT-4 CALL .PINT .ENDM .MACRO .P8 I .GLOBL .PINT MOV I,.PINT-2 MOV #8.,.PINT-4 CALL .PINT .ENDM .MACRO .P10 I .GLOBL .PINT MOV I,.PINT-2 MOV #10.,.PINT-4 CALL .PINT .ENDM .MACRO .PA X,Y .GLOBL .PA .MCALL .MOVF .IF NB X .MOVF X,.PA-4 .ENDC .IF NB Y .MOVF Y,.PA-10 .ENDC CALL .PA .ENDM .MACRO .PCM X,Y .GLOBL .PCM .MCALL .MOVF .IF NB X .MOVF X,.PCM-4 .ENDC .IF NB Y .MOVF Y,.PCM-10 .ENDC CALL .PCM .ENDM .MACRO .PARS A,B,TERM,ADDRES .GLOBL .PARS MOV A,.PARS-2 MOV B,.PARS-4 MOV TERM,.PARS-6 CALL .PARS .IF NB ADDRES MOV .PARS-8.,ADDRES .ENDC .ENDM .MACRO .PB B .GLOBL .PB MOVB B,.PB-2 CALL .PB .ENDM .MACRO .PD .GLOBL .PD CALL .PD .ENDM .MACRO .PEEKB A,B .GLOBL .MEM .MCALL .MOVF .MOVF A,.MEM-4 CLR .MEM-6 CALL .MEM MOVB .MEM-16,B .ENDM .MACRO .PEEKF A,F .GLOBL .MEM .MCALL .MOVF .MOVF A,.MEM-4 MOV #4,.MEM-6 CALL .MEM .MOVF .MEM-16,F .ENDM .MACRO .PEEKI A,I .GLOBL .MEM .MCALL .MOVF .MOVF A,.MEM-4 MOV #2,.MEM-6 CALL .MEM MOV .MEM-16,I .ENDM .MACRO .PEEKM A,MATRIX,L,M,N .GLOBL .MEM,.CALL .MCALL .MOVF MOV #.,.CALL-2 .MOVF A,.MEM-4 MOV #8.,.MEM-6 MOV MATRIX,.MEM-16 MOV L,.MEM-20 .IF NB M MOV M,.MEM-22 .ENDC .IF B M MOV #1,.MEM-22 .ENDC .IF NB N MOV N,.MEM-24 .ENDC .IF B N MOV #1,.MEM-24 .ENDC CALL .MEM .ENDM .MACRO .PEEKZ A,Z .GLOBL .MEM .MCALL .MOVF,.MOVZ .MOVF A,.MEM-4 MOV #6,.MEM-6 CALL .MEM .MOVZ .MEM-16,Z .ENDM .MACRO .PF F .GLOBL .PF .MCALL .MOVF .MOVF F,.PF-4 CALL .PF .ENDM .MACRO .PHASZ Z,ANGLE .MCALL .MOVF,.MOVZ .GLOBL .PHASZ,.CALL MOV #.,.CALL-2 .MOVZ Z,.PHASZ-10 CALL .PHASZ .MOVF .PHASZ-14,ANGLE .ENDM .MACRO .PL S .GLOBL .PL,.PB .IF NB S MOV S,.PL-2 CALL .PL .ENDC .IF B S MOVB #15,.PB-2 CALL .PB MOVB #12,.PB-2 CALL .PB .ENDC .ENDM .MACRO .PLQ STRING .GLOBL .PL .ENABL LSB BR 66$ 65$: .ASCIZ ~STRING~ .EVEN 66$: MOV #65$,.PL-2 CALL .PL .DSABL LSB .ENDM .MACRO .PL2 L .GLOBL .PL2 .MCALL .MOVF .MOVF L,.PL2-4 CALL .PL2 .ENDM .MACRO .PL8 L .GLOBL .PL8 .MCALL .MOVF .MOVF L,.PL8-4 CALL .PL8 .ENDM .MACRO .PM A,L,M,N .GLOBL .PM,.CALL MOV #.,.CALL-2 MOV A,.PM-2 MOV L,.PM-4 .IF NB M MOV M,.PM-6 .ENDC .IF B M MOV #1,.PM-6 .ENDC .IF NB N MOV N,.PM-10 .ENDC .IF B N MOV #1,.PM-10 .ENDC CALL .PM .ENDM .MACRO .PNP EX,EY,CX,CY .GLOBL .TRANS .MCALL .MOVF .MOVF EX,.TRANS-4 .MOVF EY,.TRANS-10 .MOVF CX,.TRANS-14 .MOVF CY,.TRANS-20 MOV #1,.TRANS-22 CALL .TRANS .ENDM .MACRO .POKEB B,A .GLOBL .MEM .MCALL .MOVF .MOVF A,.MEM-4 MOV #10.,.MEM-6 MOVB B,.MEM-16 CALL .MEM .ENDM .MACRO .POKEF F,A .GLOBL .MEM .MCALL .MOVF .MOVF A,.MEM-4 MOV #14.,.MEM-6 .MOVF F,.MEM-16 CALL .MEM .ENDM .MACRO .POKEI I,A .GLOBL .MEM .MCALL .MOVF .MOVF A,.MEM-4 MOV #12.,.MEM-6 MOV I,.MEM-16 CALL .MEM .ENDM .MACRO .POKEM MATRIX,A,L,M,N .GLOBL .MEM,.CALL .MCALL .MOVF MOV #.,.CALL-2 .MOVF A,.MEM-4 MOV #18.,.MEM-6 MOV MATRIX,.MEM-16 MOV L,.MEM-20 .IF NB M MOV M,.MEM-22 .ENDC .IF B M MOV #1,.MEM-22 .ENDC .IF NB N MOV N,.MEM-24 .ENDC .IF B N MOV #1,.MEM-24 .ENDC CALL .MEM .ENDM .MACRO .POKEZ Z,A .GLOBL .MEM .MCALL .MOVF,.MOVZ .MOVF A,.MEM-4 MOV #16.,.MEM-6 .MOVZ Z,.MEM-16 CALL .MEM .ENDM .MACRO .POLY X,DEGREE,A,P .GLOBL .POLY,.CALL .MCALL .MOVF MOV #.,.CALL-2 .MOVF X,.POLY-4 MOV DEGREE,.POLY-6 MOV A,.POLY-10 CALL .POLY .MOVF .POLY-14,P .ENDM .MACRO .POWI X,N,Y .GLOBL .POWI,.CALL .MCALL .MOVF MOV #.,.CALL-2 .MOVF X,.POWI-4 MOV N,.POWI-6 CALL .POWI .MOVF .POWI-12,Y .ENDM .MACRO .POWII I,J,K .GLOBL .POWII,.CALL MOV #.,.CALL-2 MOV I,.POWII-2 MOV J,.POWII-4 CALL .POWII MOV .POWII-6,K .ENDM .MACRO .POWR X,Y,Z .GLOBL .POWR,.CALL .MCALL .MOVF MOV #.,.CALL-2 .MOVF X,.POWR-4 .MOVF Y,.POWR-10 CALL .POWR .MOVF .POWR-14,Z .ENDM .MACRO .POWZ Z1,N,Z2 .GLOBL .POWZ .MCALL .MOVZ .MOVZ Z1,.POWZ-10 MOV N,.POWZ-12 CALL .POWZ .MOVZ .POWZ-22,Z2 .ENDM .MACRO .PS S .GLOBL .PS MOV S,.PS-2 CALL .PS .ENDM .MACRO .PSQ STRING .GLOBL .PS .ENABL LSB BR 66$ 65$: .ASCIZ ~STRING~ .EVEN 66$: MOV #65$,.PS-2 CALL .PS .DSABL LSB .ENDM .MACRO .PU .GLOBL .PU CALL .PU .ENDM .MACRO .PZ Z .MCALL .MOVZ .GLOBL .PZ .MOVZ Z,.PZ-10 CALL .PZ .ENDM .MACRO .R X,Y .GLOBL .R,.PAX,.PAY .MCALL .MOVF .IF NB X .MOVF X,.R-4 .ENDC .IF B X .MOVF .PAX,.R-4 .ENDC .IF NB Y .MOVF Y,.R-10 .ENDC .IF B Y .MOVF .PAY,.R-10 .ENDC CALL .R .ENDM .MACRO .READ0 S .GLOBL .OPEN0,.CALL MOV #.,.CALL-2 CLR .OPEN0-2 ;READWR=0 .IF NB S MOV S,.OPEN0-4 .ENDC .IF B S CLR .OPEN0-4 .ENDC CALL .OPEN0 .ENDM .MACRO .READ1 S .GLOBL .OPEN1,.CALL MOV #.,.CALL-2 CLR .OPEN1-2 .IF NB S MOV S,.OPEN1-4 .ENDC .IF B S CLR .OPEN1-4 .ENDC CALL .OPEN1 .ENDM .MACRO .READ2 S .GLOBL .OPEN2,.CALL MOV #.,.CALL-2 CLR .OPEN2-2 .IF NB S MOV S,.OPEN2-4 .ENDC .IF B S CLR .OPEN2-4 .ENDC CALL .OPEN2 .ENDM .MACRO .READ3 S .GLOBL .OPEN3,.CALL MOV #.,.CALL-2 CLR .OPEN3-2 .IF NB S MOV S,.OPEN3-4 .ENDC .IF B S CLR .OPEN3-4 .ENDC CALL .OPEN3 .ENDM .MACRO .R0B BB .GLOBL .DISK0,.CALL MOV #.,.CALL-2 CLR .DISK0-4 ;RW=0; BI=0 CALL .DISK0 MOVB .DISK0-2,BB .ENDM .MACRO .R1B BB .GLOBL .DISK1,.CALL MOV #.,.CALL-2 CLR .DISK1-4 CALL .DISK1 MOVB .DISK1-2,BB .ENDM .MACRO .R2B BB .GLOBL .DISK2,.CALL MOV #.,.CALL-2 CLR .DISK2-4 CALL .DISK2 MOVB .DISK2-2,BB .ENDM .MACRO .R3B BB .GLOBL .DISK3,.CALL MOV #.,.CALL-2 CLR .DISK3-4 CALL .DISK3 MOVB .DISK3-2,BB .ENDM .MACRO .R0BK BUFFER,BLOCK .GLOBL .R0BK,.CALL MOV #.,.CALL-2 MOV BUFFER,.R0BK-2 MOV BLOCK,.R0BK-4 CALL .R0BK .ENDM .MACRO .R1BK BUFFER,BLOCK .GLOBL .R1BK,.CALL MOV #.,.CALL-2 MOV BUFFER,.R1BK-2 MOV BLOCK,.R1BK-4 CALL .R1BK .ENDM .MACRO .R2BK BUFFER,BLOCK .GLOBL .R2BK,.CALL MOV #.,.CALL-2 MOV BUFFER,.R2BK-2 MOV BLOCK,.R2BK-4 CALL .R2BK .ENDM .MACRO .R3BK BUFFER,BLOCK .GLOBL .R3BK,.CALL MOV #.,.CALL-2 MOV BUFFER,.R3BK-2 MOV BLOCK,.R3BK-4 CALL .R3BK .ENDM .MACRO .R0F F .MCALL .MOVF .GLOBL .R0F,.CALL MOV #.,.CALL-2 CALL .R0F .MOVF .R0F-4,F .ENDM .MACRO .R1F F .MCALL .MOVF .GLOBL .R1F,.CALL MOV #.,.CALL-2 CALL .R1F .MOVF .R1F-4,F .ENDM .MACRO .R2F F .MCALL .MOVF .GLOBL .R2F,.CALL MOV #.,.CALL-2 CALL .R2F .MOVF .R2F-4,F .ENDM .MACRO .R3F F .MCALL .MOVF .GLOBL .R3F,.CALL MOV #.,.CALL-2 CALL .R3F .MOVF .R3F-4,F .ENDM .MACRO .R0I I .GLOBL .DISK0,.CALL MOV #.,.CALL-2 MOV #1,.DISK0-4 ;RW=0; BI=1 CALL .DISK0 MOV .DISK0-2,I .ENDM .MACRO .R1I I .GLOBL .DISK1,.CALL MOV #.,.CALL-2 MOV #1,.DISK1-4 CALL .DISK1 MOV .DISK1-2,I .ENDM .MACRO .R2I I .GLOBL .DISK2,.CALL MOV #.,.CALL-2 MOV #1,.DISK2-4 CALL .DISK2 MOV .DISK2-2,I .ENDM .MACRO .R3I I .GLOBL .DISK3,.CALL MOV #.,.CALL-2 MOV #1,.DISK3-4 CALL .DISK3 MOV .DISK3-2,I .ENDM .MACRO .R0L S .GLOBL .R0L,.CALL MOV #.,.CALL-2 MOV S,.R0L-2 CALL .R0L .ENDM .MACRO .R1L S .GLOBL .R1L,.CALL MOV #.,.CALL-2 MOV S,.R1L-2 CALL .R1L .ENDM .MACRO .R2L S .GLOBL .R2L,.CALL MOV #.,.CALL-2 MOV S,.R2L-2 CALL .R2L .ENDM .MACRO .R3L S .GLOBL .R3L,.CALL MOV #.,.CALL-2 MOV S,.R3L-2 CALL .R3L .ENDM .MACRO .R0M A,L,M,N .GLOBL .R0M,.CALL MOV #.,.CALL-2 MOV A,.R0M-2 MOV L,.R0M-4 .IF NB M MOV M,.R0M-6 .ENDC .IF B M MOV #1,.R0M-6 .ENDC .IF NB N MOV N,.R0M-10 .ENDC .IF B N MOV #1,.R0M-10 .ENDC CALL .R0M .ENDM .MACRO .R1M A,L,M,N .GLOBL .R1M,.CALL MOV #.,.CALL-2 MOV A,.R1M-2 MOV L,.R1M-4 .IF NB M MOV M,.R1M-6 .ENDC .IF B M MOV #1,.R1M-6 .ENDC .IF NB N MOV N,.R1M-10 .ENDC .IF B N MOV #1,.R1M-10 .ENDC CALL .R1M .ENDM .MACRO .R2M A,L,M,N .GLOBL .R2M,.CALL MOV #.,.CALL-2 MOV A,.R2M-2 MOV L,.R2M-4 .IF NB M MOV M,.R2M-6 .ENDC .IF B M MOV #1,.R2M-6 .ENDC .IF NB N MOV N,.R2M-10 .ENDC .IF B N MOV #1,.R2M-10 .ENDC CALL .R2M .ENDM .MACRO .R3M A,L,M,N .GLOBL .R3M,.CALL MOV #.,.CALL-2 MOV A,.R3M-2 MOV L,.R3M-4 .IF NB M MOV M,.R3M-6 .ENDC .IF B M MOV #1,.R3M-6 .ENDC .IF NB N MOV N,.R3M-10 .ENDC .IF B N MOV #1,.R3M-10 .ENDC CALL .R3M .ENDM .MACRO .R0S S,T .GLOBL .R0S,.CALL MOV #.,.CALL-2 MOV S,.R0S-2 MOV T,.R0S-4 CALL .R0S .ENDM .MACRO .R1S S,T .GLOBL .R1S,.CALL MOV #.,.CALL-2 MOV S,.R1S-2 MOV T,.R1S-4 CALL .R1S .ENDM .MACRO .R2S S,T .GLOBL .R2S,.CALL MOV #.,.CALL-2 MOV S,.R2S-2 MOV T,.R2S-4 CALL .R2S .ENDM .MACRO .R3S S,T .GLOBL .R3S,.CALL MOV #.,.CALL-2 MOV S,.R3S-2 MOV T,.R3S-4 CALL .R3S .ENDM .MACRO .R0Z Z .MCALL .MOVZ .GLOBL .R0Z,.CALL MOV #.,.CALL-2 CALL .R0Z .MOVZ .R0Z-10,Z .ENDM .MACRO .R1Z Z .MCALL .MOVZ .GLOBL .R1Z,.CALL MOV #.,.CALL-2 CALL .R1Z .MOVZ .R1Z-10,Z .ENDM .MACRO .R2Z Z .MCALL .MOVZ .GLOBL .R2Z,.CALL MOV #.,.CALL-2 CALL .R2Z .MOVZ .R2Z-10,Z .ENDM .MACRO .R3Z Z .MCALL .MOVZ .GLOBL .R3Z,.CALL MOV #.,.CALL-2 CALL .R3Z .MOVZ .R3Z-10,Z .ENDM .MACRO .RAND X .MCALL .MOVF .GLOBL .RAND CALL .RAND .MOVF .RAND-4,X .ENDM .MACRO .RANDS X .MCALL .MOVF .GLOBL .RANDS CALL .RANDS .MOVF .RANDS-4,X .ENDM .MACRO .RANOR X .MCALL .MOVF .GLOBL .RANOR CALL .RANOR .MOVF .RANOR-4,X .ENDM .MACRO .RECZ Z1,Z2 .MCALL .MOVZ .GLOBL .RECZ .MOVZ Z1,.RECZ-10 CALL .RECZ .MOVZ .RECZ-20,Z2 .ENDM .MACRO .REPLS A,B,C,ADDR .GLOBL .REPLS MOV A,.REPLS-2 MOV B,.REPLS-4 MOV C,.REPLS-6 CALL .REPLS .IF NB ADDR MOV .REPLS-10,ADDR .ENDC .ENDM .MACRO .RIS ;RESET TERMINAL TO INITIAL STATE .MCALL .TTYOUT MOV R0,-(SP) .TTYOUT #33 ;ESC .TTYOUT #143 ;c MOV (SP)+,R0 .ENDM .MACRO .ROOT F,XLO,XHI,XZERO .GLOBL .ROOT .MCALL .MOVF MOV F,.ROOT-2 .MOVF XLO,.ROOT-6 .MOVF XHI,.ROOT-12 CALL .ROOT .MOVF .ROOT-16,XZERO .ENDM .MACRO .SCALE XMIN,YMIN,XMAX,YMAX .GLOBL .SCALE .MCALL .MOVF .MOVF XMIN,.SCALE-4 .MOVF YMIN,.SCALE-10 .MOVF XMAX,.SCALE-14 .MOVF YMAX,.SCALE-20 .MOVF #4,.SCALE-24 ;OFFX .MOVF #2,.SCALE-30 ;OFFY .ENDM .MACRO .SETDE .GLOBL .DEGRE MOV #1,.DEGRE .ENDM .MACRO .SETRA .GLOBL .DEGRE CLR .DEGRE .ENDM .MACRO .SI W,H .GLOBL .SI .MCALL .MOVF .MOVF W,.SI-4 .MOVF H,.SI-10 CALL .SI .ENDM .MACRO .SIN ANGLE,Z .GLOBL .SIN .MCALL .MOVF .MOVF ANGLE,.SIN-4 CALL .SIN .MOVF .SIN-10,Z .ENDM .MACRO .SMALS S .GLOBL .SMALS MOV S,.SMALS-2 CALL .SMALS .ENDM .MACRO .SP N .GLOBL .SP .IF NB N MOV N,.SP-2 .ENDC .IF B N CLR .SP-2 .ENDC CALL .SP .ENDM .MACRO .SPOT R .GLOBL .SPOT .MCALL .MOVF .MOVF R,.SPOT-4 CALL .SPOT .ENDM .MACRO .SQRT X,Y .GLOBL .SQRT,.CALL .MCALL .MOVF MOV #.,.CALL-2 .MOVF X,.SQRT-4 CALL .SQRT .MOVF .SQRT-10,Y .ENDM .MACRO .SUBM A,BB,C,L,M,N .GLOBL .SUBM,.CALL MOV #.,.CALL-2 MOV A,.SUBM-2 MOV BB,.SUBM-4 MOV C,.SUBM-6 MOV L,.SUBM-10 .IF NB M MOV M,.SUBM-12 .ENDC .IF B M MOV #1,.SUBM-12 .ENDC .IF NB N MOV N,.SUBM-14 .ENDC .IF B N MOV #1,.SUBM-14 .ENDC CALL .SUBM .ENDM .MACRO .SUBV A,B,C .GLOBL .SUBV MOV A,.SUBV-2 MOV B,.SUBV-4 MOV C,.SUBV-6 CALL .SUBV .ENDM .MACRO .SUBZ Z1,Z2,Z3 .MCALL .MOVZ .GLOBL .SUBZ .MOVZ Z1,.SUBZ-10 .MOVZ Z2,.SUBZ-20 CALL .SUBZ .MOVZ .SUBZ-30,Z3 .ENDM .MACRO .SWL .MCALL .TTYOUT MOV R0,-(SP) .TTYOUT #33 .TTYOUT #43 .TTYOUT #65 MOV (SP)+,R0 .ENDM .MACRO .T2 I .GLOBL .TINT MOV I,.TINT-2 MOV #2,.TINT-4 CALL .TINT .ENDM .MACRO .T8 I .GLOBL .TINT MOV I,.TINT-2 MOV #8.,.TINT-4 CALL .TINT .ENDM .MACRO .T10 I .GLOBL .TINT MOV I,.TINT-2 MOV #10.,.TINT-4 CALL .TINT .ENDM .MACRO .TAN A,X .MCALL .MOVF .GLOBL .TAN .MOVF A,.TAN-4 CALL .TAN .MOVF .TAN-10,X .ENDM .MACRO .TB B .MCALL .TTYOUT MOV R0,-(SP) ;.TTYOUT USES R0 .TTYOUT B MOV (SP)+,R0 .ENDM .MACRO .TF F .GLOBL .TF .MCALL .MOVF .MOVF F,.TF-4 CALL .TF .ENDM .MACRO .TL S .MCALL .PRINT,.TTYOUT MOV R0,-(SP) ;.PRINT USES R0 .IF NB S .PRINT S .ENDC .IF B S .TTYOUT #15 .TTYOUT #12 .ENDC MOV (SP)+,R0 .ENDM .MACRO .TL2 L .GLOBL .TL2 .MCALL .MOVF .MOVF L,.TL2-4 CALL .TL2 .ENDM .MACRO .TL8 L .GLOBL .TL8 .MCALL .MOVF .MOVF L,.TL8-4 CALL .TL8 .ENDM .MACRO .TLQ STRING .MCALL .PRINT .ENABL LSB MOV R0,-(SP) BR 66$ 65$: .ASCIZ ~STRING~ .EVEN 66$: .PRINT #65$ ;.PRINT PUTS OUT CR-LF MOV (SP)+,R0 .DSABL LSB .ENDM .MACRO .TM A,L,M,N .GLOBL .TM,.CALL MOV #.,.CALL-2 MOV A,.TM-2 MOV L,.TM-4 .IF NB M MOV M,.TM-6 .ENDC .IF B M MOV #1,.TM-6 .ENDC .IF NB N MOV N,.TM-10 .ENDC .IF B N MOV #1,.TM-10 .ENDC CALL .TM .ENDM .MACRO .TRANM A,NROW,NCOL .GLOBL .TRANM,.CALL MOV #.,.CALL-2 MOV A,.TRANM-2 MOV NROW,.TRANM-4 MOV NCOL,.TRANM-6 CALL .TRANM .ENDM .MACRO .TRUNS A,L .GLOBL .TRUNS MOV A,.TRUNS-2 MOV L,.TRUNS-4 CALL .TRUNS .ENDM .MACRO .TS S .MCALL .TTYOUT MOV R0,-(SP) ;.TTYOUT USES R0 MOV R1,-(SP) MOV S,R1 TSTB (R1) BEQ .+12 .TTYOUT (R1)+ BR .-12 MOV (SP)+,R1 MOV (SP)+,R0 .ENDM .MACRO .TSQ STRING .MCALL .PRINT .ENABL LSB MOV R0,-(SP) BR 66$ 65$: .ASCII ~STRING~ .BYTE 200 .EVEN 66$: .PRINT #65$ MOV (SP)+,R0 .DSABL LSB .ENDM .MACRO .TSTL L .MCALL .MOVF .GLOBL .TSTL .MOVF L,.TSTL-4 CALL .TSTL .ENDM .MACRO .TV V .GLOBL .TV MOV V,.TV-2 CALL .TV .ENDM .MACRO .TZ Z .MCALL .MOVZ .GLOBL .TZ .MOVZ Z,.TZ-10 CALL .TZ .ENDM .MACRO .V X,Y .GLOBL .V,.PAX,.PAY .MCALL .MOVF .IF NB X .MOVF X,.V-4 .ENDC .IF B X .MOVF .PAX,.V-4 .ENDC .IF NB Y .MOVF Y,.V-10 .ENDC .IF B Y .MOVF .PAY,.V-10 .ENDC CALL .V .ENDM .MACRO .VALS S1,S2 .GLOBL .VALS MOV R0,-(SP) MOV R1,-(SP) MOV S1,R0 MOV S2,R1 CALL .VALS MOV (SP)+,R1 MOV (SP)+,R0 .ENDM .MACRO .VTCR X,Y,C .GLOBL .VTCR CALL .VTCR MOV .VTCR-2,X MOV .VTCR-4,Y MOVB .VTCR-6,C .ENDM .MACRO .VTE .MCALL .PRINT .ENABL LSB MOV R0,-(SP) .PRINT #65$ BR 66$ 65$: .BYTE 33,120,160,123,50,105,51,33,134,200 ;200 SUPPRESSES CR-LF 66$: MOV (SP)+,R0 .DSABL LSB .ENDM .MACRO .VTP X,Y .GLOBL .VTP MOV X,.VTP-2 MOV Y,.VTP-4 CALL .VTP .ENDM .MACRO .VTV X,Y .GLOBL .VTV MOV X,.VTV-2 MOV Y,.VTV-4 CALL .VTV .ENDM .MACRO .WRIT0 S .GLOBL .OPEN0,.CALL MOV #.,.CALL-2 MOV #1,.OPEN0-2 ;READWR=1 FOR WRITING .IF NB S MOV S,.OPEN0-4 .ENDC .IF B S CLR .OPEN0-4 .ENDC CALL .OPEN0 .ENDM .MACRO .WRIT1 S .GLOBL .OPEN1,.CALL MOV #.,.CALL-2 MOV #1,.OPEN1-2 .IF NB S MOV S,.OPEN1-4 .ENDC .IF B S CLR .OPEN1-4 .ENDC CALL .OPEN1 .ENDM .MACRO .WRIT2 S .GLOBL .OPEN2,.CALL MOV #.,.CALL-2 MOV #1,.OPEN2-2 .IF NB S MOV S,.OPEN2-4 .ENDC .IF B S CLR .OPEN2-4 .ENDC CALL .OPEN2 .ENDM .MACRO .WRIT3 S .GLOBL .OPEN3,.CALL MOV #.,.CALL-2 MOV #1,.OPEN3-2 .IF NB S MOV S,.OPEN3-4 .ENDC .IF B S CLR .OPEN3-4 .ENDC CALL .OPEN3 .ENDM .MACRO .W0B X .GLOBL .DISK0,.CALL MOV #.,.CALL-2 MOV #^B100000000,.DISK0-4 ;RW=1 BI=0 MOVB X,.DISK0-2 CALL .DISK0 .ENDM .MACRO .W1B X .GLOBL .DISK1,.CALL MOV #.,.CALL-2 MOV #^B100000000,.DISK1-4 MOVB X,.DISK1-2 CALL .DISK1 .ENDM .MACRO .W2B X .GLOBL .DISK2,.CALL MOV #.,.CALL-2 MOV #^B100000000,.DISK2-4 MOVB X,.DISK2-2 CALL .DISK2 .ENDM .MACRO .W3B X .GLOBL .DISK3,.CALL MOV #.,.CALL-2 MOV #^B100000000,.DISK3-4 MOVB X,.DISK3-2 CALL .DISK3 .ENDM .MACRO .W0BK BUFFER,BLOCK .GLOBL .W0BK,.CALL MOV #.,.CALL-2 MOV BUFFER,.W0BK-2 MOV BLOCK,.W0BK-4 CALL .W0BK .ENDM .MACRO .W1BK BUFFER,BLOCK .GLOBL .W1BK,.CALL MOV #.,.CALL-2 MOV BUFFER,.W1BK-2 MOV BLOCK,.W1BK-4 CALL .W1BK .ENDM .MACRO .W2BK BUFFER,BLOCK .GLOBL .W2BK,.CALL MOV #.,.CALL-2 MOV BUFFER,.W2BK-2 MOV BLOCK,.W2BK-4 CALL .W2BK .ENDM .MACRO .W3BK BUFFER,BLOCK .GLOBL .W3BK,.CALL MOV #.,.CALL-2 MOV BUFFER,.W3BK-2 MOV BLOCK,.W3BK-4 CALL .W3BK .ENDM .MACRO .W0F F .MCALL .MOVF .GLOBL .W0F,.CALL MOV #.,.CALL-2 .MOVF F,.W0F-4 CALL .W0F .ENDM .MACRO .W1F F .GLOBL .W1F,.CALL .MCALL .MOVF MOV #.,.CALL-2 .MOVF F,.W1F-4 CALL .W1F .ENDM .MACRO .W2F F .GLOBL .W2F,.CALL .MCALL .MOVF MOV #.,.CALL-2 .MOVF F,.W2F-4 CALL .W2F .ENDM .MACRO .W3F F .GLOBL .W3F,.CALL .MCALL .MOVF MOV #.,.CALL-2 .MOVF F,.W3F-4 CALL .W3F .ENDM .MACRO .W0I I .GLOBL .DISK0,.CALL MOV #.,.CALL-2 MOV #^B100000001,.DISK0-4 ;RW=1 BI=1 MOV I,.DISK0-2 CALL .DISK0 .ENDM .MACRO .W1I I .GLOBL .DISK1,.CALL MOV #.,.CALL-2 MOV #^B100000001,.DISK1-4 MOV I,.DISK1-2 CALL .DISK1 .ENDM .MACRO .W2I I .GLOBL .DISK2,.CALL MOV #.,.CALL-2 MOV #^B100000001,.DISK2-4 MOV I,.DISK2-2 CALL .DISK2 .ENDM .MACRO .W3I I .GLOBL .DISK3,.CALL MOV #.,.CALL-2 MOV #^B100000001,.DISK3-4 MOV I,.DISK3-2 CALL .DISK3 .ENDM .MACRO .W0L S .GLOBL .W0L .IF NB S MOV S,.W0L-2 CALL .W0L .ENDC .IF B S MOVB #15,.W0B-2 CALL .W0B MOVB #12,.W0B-2 CALL .W0B .ENDC .ENDM .MACRO .W1L S .GLOBL .W1L .IF NB S MOV S,.W1L-2 CALL .W1L .ENDC .IF B S MOVB #15,.W1B-2 CALL .W1B MOVB #12,.W1B-2 CALL .W1B .ENDC .ENDM .MACRO .W2L S .GLOBL .W2L .IF NB S MOV S,.W2L-2 CALL .W2L .ENDC .IF B S MOVB #15,.W2B-2 CALL .W2B MOVB #12,.W2B-2 CALL .W2B .ENDC .ENDM .MACRO .W3L S .GLOBL .W3L .IF NB S MOV S,.W3L-2 CALL .W3L .ENDC .IF B S MOVB #15,.W3B-2 CALL .W3B MOVB #12,.W3B-2 CALL .W3B .ENDC .ENDM .MACRO .W0LQ STRING .ENABL LSB .GLOBL .W0L,.CALL MOV #.,.CALL-2 BR 66$ 65$: .ASCIZ ~STRING~ .EVEN 66$: MOV #65$,.W0L-2 CALL .W0L .DSABL LSB .ENDM .MACRO .W1LQ STRING .ENABL LSB .GLOBL .W1L,.CALL MOV #.,.CALL-2 BR 66$ 65$: .ASCIZ ~STRING~ .EVEN 66$: MOV #65$,.W1L-2 CALL .W1L .DSABL LSB .ENDM .MACRO .W2LQ STRING .ENABL LSB .GLOBL .W2L,.CALL MOV #.,.CALL-2 BR 66$ 65$: .ASCIZ ~STRING~ .EVEN 66$: MOV #65$,.W2L-2 CALL .W2L .DSABL LSB .ENDM .MACRO .W3LQ STRING .ENABL LSB .GLOBL .W3L,.CALL MOV #.,.CALL-2 BR 66$ 65$: .ASCIZ ~STRING~ .EVEN 66$: MOV #65$,.W3L-2 CALL .W3L .DSABL LSB .ENDM .MACRO .W0M A,L,M,N .GLOBL .W0M,.CALL MOV #.,.CALL-2 MOV A,.W0M-2 MOV L,.W0M-4 .IF NB M MOV M,.W0M-6 .ENDC .IF B M MOV #1,.W0M-6 .ENDC .IF NB N MOV N,.W0M-10 .ENDC .IF B N MOV #1,.W0M-10 .ENDC CALL .W0M .ENDM .MACRO .W1M A,L,M,N .GLOBL .W1M,.CALL MOV #.,.CALL-2 MOV A,.W1M-2 MOV L,.W1M-4 .IF NB M MOV M,.W1M-6 .ENDC .IF B M MOV #1,.W1M-6 .ENDC .IF NB N MOV N,.W1M-10 .ENDC .IF B N MOV #1,.W1M-10 .ENDC CALL .W1M .ENDM .MACRO .W2M A,L,M,N .GLOBL .W2M,.CALL MOV #.,.CALL-2 MOV A,.W2M-2 MOV L,.W2M-4 .IF NB M MOV M,.W2M-6 .ENDC .IF B M MOV #1,.W2M-6 .ENDC .IF NB N MOV N,.W2M-10 .ENDC .IF B N MOV #1,.W2M-10 .ENDC CALL .W2M .ENDM .MACRO .W3M A,L,M,N .GLOBL .W3M,.CALL MOV #.,.CALL-2 MOV A,.W3M-2 MOV L,.W3M-4 .IF NB M MOV M,.W3M-6 .ENDC .IF B M MOV #1,.W3M-6 .ENDC .IF NB N MOV N,.W3M-10 .ENDC .IF B N MOV #1,.W3M-10 .ENDC CALL .W3M .ENDM .MACRO .W0S S .GLOBL .W0S,.CALL MOV #.,.CALL-2 MOV S,.W0S-2 CALL .W0S .ENDM .MACRO .W1S S .GLOBL .W1S,.CALL MOV #.,.CALL-2 MOV S,.W1S-2 CALL .W1S .ENDM .MACRO .W2S S .GLOBL .W2S,.CALL MOV #.,.CALL-2 MOV S,.W2S-2 CALL .W2S .ENDM .MACRO .W3S S .GLOBL .W3S,.CALL MOV #.,.CALL-2 MOV S,.W3S-2 CALL .W3S .ENDM .MACRO .W0SQ STRING .ENABL LSB .GLOBL .W0S,.CALL MOV #.,.CALL-2 BR 66$ 65$: .ASCIZ ~STRING~ .EVEN 66$: MOV #65$,.W0S-2 CALL .W0S .DSABL LSB .ENDM .MACRO .W1SQ STRING .GLOBL .W1S,.CALL MOV #.,.CALL-2 .ENABL LSB BR 66$ 65$: .ASCIZ ~STRING~ .EVEN 66$: MOV #65$,.W1S-2 CALL .W1S .DSABL LSB .ENDM .MACRO .W2SQ STRING .GLOBL .W2S,.CALL MOV #.,.CALL-2 .ENABL LSB BR 66$ 65$: .ASCIZ ~STRING~ .EVEN 66$: MOV #65$,.W2S-2 CALL .W2S .DSABL LSB .ENDM .MACRO .W3SQ STRING .GLOBL .W3S,.CALL MOV #.,.CALL-2 .ENABL LSB BR 66$ 65$: .ASCIZ ~STRING~ .EVEN 66$: MOV #65$,.W3S-2 CALL .W3S .DSABL LSB .ENDM .MACRO .W0Z Z .MCALL .MOVZ .GLOBL .W0Z,.CALL MOV #.,.CALL-2 .MOVZ Z,.W0Z-10 CALL .W0Z .ENDM .MACRO .W1Z Z .MCALL .MOVZ .GLOBL .W1Z,.CALL MOV #.,.CALL-2 .MOVZ Z,.W1Z-10 CALL .W1Z .ENDM .MACRO .W2Z Z .MCALL .MOVZ .GLOBL .W2Z,.CALL MOV #.,.CALL-2 .MOVZ Z,.W2Z-10 CALL .W2Z .ENDM .MACRO .W3Z Z .MCALL .MOVZ .GLOBL .W3Z,.CALL MOV #.,.CALL-2 .MOVZ Z,.W3Z-10 CALL .W3Z .ENDM .MACRO .XMTB B .GLOBL .XMTB MOVB B,.XMTB-2 CALL .XMTB .ENDM .MACRO .XMTQ STRING .GLOBL .XMTS .ENABL LSB MOV #65$,.XMTS-2 CALL .XMTS BR 66$ 65$: .ASCIZ ~STRING~ .EVEN 66$: .DSABL LSB .ENDM .MACRO .XMTS S .GLOBL .XMTS MOV S,.XMTS-2 CALL .XMTS .ENDM .MACRO .ZD X,Y .GLOBL .ZD,.PAX,.PAY .MCALL .MOVF .IF NB X .MOVF X,.ZD-4 .ENDC .IF B X .MOVF .PAX,.ZD-4 .ENDC .IF NB Y .MOVF Y,.ZD-10 .ENDC .IF B Y .MOVF .PAY,.ZD-10 .ENDC CALL .ZD .ENDM