.TITLE FNEW .GLOBL .NEWF .GLOBL .AX .GLOBL XSPNOR .GLOBL FUNERR .GLOBL UTRA .GLOBL EVAL .GLOBL XPUSHJ .GLOBL EFUN3 .GLOBL CHAR .GLOBL .AF .GLOBL .AW .NEWF .NEWFE-.-1/2\777777+1 .SIXBT 'GRF' JMP PLOT .SIXBT 'INT' JMP INIT .SIXBT 'PLT' JMP FPLT .SIXBT 'CLS' JMP CLOSE .SIXBT 'RDM' JMP RANDOM .SIXBT 'DPY' JMP DISPLAY .SIXBT 'PTP' JMP TAPE .SIXBT 'TTP' JMP NTAP .SIXBT 'PUN' JMP PUNCH .NEWFE=. PLSF=705561 LBUFF=705222 GATE=705562 CLKON=705201 DACEU=701561 DACY=701524 DRCF=707002 DRSF=707001 DRDA=707004 TLS=700406 TSF=700401 PLOT JMS* .AX DAC N SAD ONE JMP UPEN SAD TWO JMP DPEN SAD THREE JMP ZERO SAD FOUR JMP PRINT JMP* EFUN3 ZERO LAC SEVEN / ZERO Y AND RESET JMS OUT / X AND Y DZM XS DZM YS DZM PEN JMP* EFUN3 / RETURN UPEN LAC PEN SNA JMP BRIN LAC ONE / RAISE PEN JMS OUT DZM PEN JMP BRIN DPEN LAC PEN SZA JMP BRIN LAC TWO / LOWER PEN JMS OUT LAC ONE DAC PEN BRIN JMS GETARG / BRING IN X DAC X1 JMS GETARG / BRING IN Y DAC Y SPA / IF Y < 0 ZERO Y DZM Y TAD FHUN / SUBTRACT 400 SPA JMP CONT LAC FHUN TCA / IF Y > 400 SET Y =400 DAC Y CONT LAC ONE DAC NUMX / INITIALIZE THE STEP DAC NUMY / SIZES TO 1 LAC XS TCA / FIND DELTA X TAD X1 DAC DELX LAC YS TCA / FIND DELTA Y TAD Y DAC DELY LAC DELX SPA JMP L2 SZA JMP L1 DZM NUMX JMP L3 L1 LAC THREE DAC STEPX / MAKE X STEP +VE JMP L3 L2 TCA / MAKE DELX +VE DAC DELX LAC FOUR DAC STEPX / MAKE X STEP -VE L3 LAC DELY SPA JMP L5 SZA JMP L4 DZM NUMY JMP L6 L4 LAC FIVE DAC STEPY / MAKE Y STEP +VE JMP L6 L5 TCA / MAKE DELY +VE DAC DELY LAC SIX DAC STEPY / MAKE Y STEP -VE L6 LAC NUMX SNA JMP L8 LAC NUMY SZA JMP L9 LAC DELX DAC DX JMP FINX / STEP OFF X DIRECTION L8 LAC NUMY SNA JMP* EFUN3 / RETURN LAC DELY JMP FINY / STEP OFF Y DIRECTION L9 LAC DELX TCA TAD DELY SPA / IS DELY > DELX JMP L95 / NO LAC DELY / YES SO EXCHANGE DAC TEMP / DELX AND DELY LAC DELX / VALUES DAC DELY LAC TEMP DAC DELX LAC STEPY DAC TEMP LAC STEPX DAC STEPY LAC TEMP DAC STEPX L95 LAC DELX DAC DX L10 LAC DELY TCA TAD DELX DAC Z TCA TAD DELY / IS Z > DELY SZA!SMA JMP L11 ISZ NUMX / YES SO SUB. ANOTHER LAC Z / DELY FROM DELX DAC DELX JMP L10 L11 LAC NUMX TAD DELY TCA TAD DELX DAC ZS SZA!SMA JMP L12 LAC ONE / IF ZS .LE. 0 MAKE DAC ZS / IT =1 L12 JMS* .AF / DIVIDE LAC DELY JMS* .AF DAC R TAD M1 / SUBTRACT 1 SMA JMP L14 LAC ZS TCA TAD DELY JMS* .AF LAC DELY JMS* .AF DAC R LAC NUMX DAC NUMR ISZ NUMX JMP L145 L14 LAC NUMX TAD ONE DAC NUMR L145 LAC R DAC RC L15 LAC NUMX DAC COUNT L16 LAC STEPX JMS OUT LAC COUNT TAD M1 DAC COUNT LAC DX TAD M1 DAC DX SNA / ARE ALL THE X STEPS USED UP JMP FINY / YES SO FINISH THE Y STEPS LAC COUNT SZA JMP L16 LAC STEPY JMS OUT LAC DELY TAD M1 DAC DELY SNA / ARE ALL THE Y STEPS USED UP JMP FINX / YES SO FINISH X LAC RC TAD M1 SZA JMP L15 LAC NUMR DAC COUNT LAC R DAC RC JMP L16 FINX LAC DX SNA JMP DONE LAC STEPX JMS OUT LAC DX TAD M1 DAC DX JMP FINX FINY LAC DELY SNA JMP DONE LAC STEPY JMS OUT LAC DELY TAD M1 DAC DELY JMP FINY DONE LAC X1 DAC XS LAC Y DAC YS JMP* EFUN3 / RETURN TO FOCAL / PRINT JMS* XSPNOR / OUTPUT ASCII ROUTINE SAD (254 JMP .+3 LAW 1 JMP* FUNERR PR JMS* UTRA LAC* CHAR SAD (206 JMP* EFUN3 TAD C1 / C1 = -240 DAC CHR TAD C2 / IS IT A LEGAL CHAR SMA JMP* EFUN3 / RETURN IF ILLEGAL IOF LAC CHR TAD CHR TAD CHR TAD CHR TAD CHR CLL!RAL DAC ADR LAC M10 / M10 = -10 DAC* WC / SET UP WC JMS BLOCK BSTRT 0 0 0 0 0 0 0 0 0 0 0 BLOCK 0 LAC BLOCK DAC* CA / SET UP CA LAC ADR TAD DRUM / GET DRUM SETUP WORD DRCF / CLEAR DRUM FLAG DRDA / OUTPUT DRUM SETUP WORD DRSF / TEST DRUM FLAG JMP .-1 DRCF LAC M10 DAC COUNT PRN1 LAC SIX TCA DAC DX ISZ BLOCK PRN2 LAC* BLOCK AND MASK / PREPARE 1ST WORD SNA JMP FIN JMS OUT LAC* BLOCK RTR RCR DAC* BLOCK ISZ DX JMP PRN2 ISZ COUNT JMP PRN1 FIN ION JMP PR / STORAGE LOCATIONS N 0 X1 0 Y 0 PEN 0 ONE 000001 TWO 000002 THREE 000003 FOUR 000004 FIVE 000005 SIX 000006 SEVEN 000007 XS 0 YS 0 FHUN 777160 / = -400 NUMX 0 NUMY 0 DELX 0 DELY 0 STEPX 0 STEPY 0 TEMP 0 M1 777777 NUMR 0 Z 0 ZS 0 R 0 RC 0 COUNT 0 DX 0 M5 777773 C1 777540 C2 777446 CHR 0 ADR 0 M10 777766 DRUM 770000 WC 17764 CA 17765 / SUBROUTINE GETARG / THIS SUBROUTINE GETS AN ARGUMENT / AND CONVERTS IT TO AN INTEGER GETARG 0 JMS* XSPNOR / SKIP SPACES SAD (254 / IS IT A COMMA JMP .+3 .DEC LAW 1 / NO A ??01 ERROR .OCT JMP* FUNERR JMS* UTRA / SKIP COMMA LAC EVAL DAC .+2 JMS* XPUSHJ XX JMS* .AX JMP* GETARG / SUBROUTINE OUT / THIS SUBROUTINE TAKES THE CONTROL CODE / FROM THE AC AND PUTS IT OUT TO THE PLOTTER OUT 0 DAC TEMP AND MASK RTR RTR PLSF / TEST PLOTTER FLAG JMP .-1 LBUFF / LOAD SERIAL TRANSFER BUFF. GATE / SET THE F-F TO GATE IN THE / DATA AND CLOCK PULSES CLKON / START SERIAL DATA CLOCK RTL RTL TAD M5 SPA / SKP IF Y MOVEMENT IS REQD. JMP* OUT TAD M1 SMA JMP CLY LAC YSTP TAD CNT / CNT = 4 PER STEP DAC YSTP OUTY RTL RTL RTL DACEU / ENABLE DACY UNSIGNED DACY / AC 0-11 -> DACY LAC TEMP JMP* OUT CLY SNA JMP DOWNY LAC YZERO DAC YSTP JMP OUTY DOWNY LAC YSTP TAD MCNT / MCNT = -4 PER STEP DAC YSTP JMP OUTY MASK 000007 YSTP 001000 CNT 000010 YZERO 001000 MCNT 777770 / INIT IOF /TURN ON GRAPICS MODE & CLEAR AS SPEC. JMS* .AX DAC I /CLEAR FLAGS AND (2 SZA JMS CS /CLEAR SCREEN LAC (6 / ^F JMS PRNT LAC (26 / ^V JMS PRNT LAC I AND (1 SZA JMS CG /CLEAR ANY GRAPHICS ION JMP* EFUN3 /RETURN / I 0 / PRNT 0 TLS TSF JMP .-1 JMP* PRNT / CS 0 /CLEAR SCREEN LAC (24 JMS PRNT JMP* CS / CG 0 /CLEAR ANY GRAPHICS DISPLAY LAC (10 JMS PRNT JMP* CG / CLOSE IOF /TURN OFF GRAPHICS MODE & CLEAR AS SPEC. JMS* .AX DAC I AND (1 SZA JMS CG LAC (7 JMS PRNT LAC I AND (2 SZA JMS CS ION JMP* EFUN3 / FPLT IOF JMS* .AX DAC YG /Y COORDINATE AND (77 XOR (100 JMS PRNT /EVEN CHAR. LAC YG AND (300 RTR RTR RTR DAC YG /UPPER BITS OF Y JMS GETARG /GET CONTROL BITS AND (7 CLL RTL XOR YG XOR (140 JMS PRNT /ODD CHAR. ION JMP* EFUN3 / YG 0 / RANDOM LAW -6 DAC SIXCNT# CALL JMS RAND ISZ SIXCNT# JMP .-2 DAC CHI# AND (400077 SNA JMP CALL RCL LAC CHI AND (77 SZL TCA JMS* .AW JMP* EFUN3 RAND 0 %BEGIN LAC RNNO AND (400100 SNA JMP %LAC2 SAD (400100 JMP %LAC2 LAC RNNO RCL IAC!CLL JMP %DAC1 %LAC2 LAC RNNO RCL %DAC1 DAC RNNO JMP* RAND RNNO 3 ENA=701521 ENB=701541 XFR=701564 DISPLAY JMS* .AX AND (777000 SWHA DAC HOR# JMS GETARG AND (777000 TAD HOR ENA ENB XFR JMP* EFUN3 TAPE JMS PTPRD AND (77 RTL RTL RTL DAC TP1 JMS PTPRD AND (77 TAD TP1 RTL RTL RTL DAC TP1 JMS PTPRD AND (77 TAD TP1 JMS* .AW JMP* EFUN3 TP1 0 PTPRD 0 IOF RD1 RSA RD2 RSF JMP .-1 RRB SNA JMP RD1 ION JMP* PTPRD NTAP IORS AND (1000 SZA LAC ONE JMS* .AW JMP* EFUN3 RSF=700101 RRB=700112 RSA=700104 IORS=700314 PUNCH JMS* .AX RTL RTL RTL RAL JMS PUN RTL RTL RTL JMS PUN RTL RTL RTL JMS PUN JMP* EFUN3 PUN 0 IOF PSB PSF JMP .-1 PCF ION JMP* PUN PSF=700201 PSB=700246 PCF=700202 .END