100 *NSTART /START PATCH HERE FOR DIRECT LOADING 110 120 / DISK I/O FUNCTION: FBLK(BLOCK[,WRITE-INDICATOR]). 130 140 XBLK, JMS I INTEGER /GET BLOCK ARGUMENT 150 PUSHA /SAVE IT 160 PUSHJ /FIND OUT IF WE WRITE 170 LARG1, ARG /**** RELOCATE **** 180 NL4000 /MAKE IT A READ 190 TAD (N^100+BUFFLD+UNIT+4000)/GET OTHER FUNCTION BITS 200 DCA FUN /PUT IN-LINE EITHER WAY 210 POPA /RESTORE BLOCK ARGUMENT 220 DCA TBLK /PUT IN-LINE ALSO 230 JMS I PSYSIO/(SYSIO) /CALL FOR READ OR WRITE 240 0 /CORE 250 FUN, .-. /FILLED IN 260 TBLK, .-. /FILLED IN 270 ION /MAKE SURE INTERRUPTS ARE STILL ON 280 RETURN /BACK TO FOCAL 290 300 / LOGICAL AND FUNCTION: FAND(FIRST-ARGUMENT,SECOND-ARGUMENT) 310 320 XAND, JMS I INTEGER /GET FIRST ARGUMENT 330 PUSHA /SAVE IT 340 TAD FLAC+1 /GET HIGH-ORDER 350 PUSHA /SAVE IT ALSO 360 PUSHJ /FIND OUT VALUE OF SECOND ARGUMENT 370 LARG2, ARG /**** RELOCATE **** 380 JMP NOSEC /WASN'T ANY 390 JMS I INTEGER /EVALUATE SECOND ARGUMENT 400 CLA /THROW IT AWAY FOR NOW 410 ZEROIN, POPA /GET FIRST HIGH-ORDER 420 AND FLAC+1 /AND WITH SECOND HIGH-ORDER 430 DCA FLAC+1 /SAVE RESULT 440 POPA /GET FIRST LOW-ORDER 450 AND FLAC+2 /AND WITH SECOND LOW-ORDER 460 FBLKIN, DCA FLAC+2 /SAVE RESULT 470 TAD (27) /SETUP THE 480 DCA FLAC /NEW EXPONENT 490 RETURN /RETURN TO FOCAL 500 510 NOSEC, DCA FLAC+1 /CLEAR 520 DCA FLAC+2 /FLAC 530 JMP ZEROIN /CONTINUE THERE 540 EJECT 550 / MEMORY REFERENCE FUNCTION: FWRD(ADDRESS[,NEWVALUE]). 560 570 XWRD, JMS I INTEGER /GET ADDRESS ARGUMENT 580 PUSHA /SAVE IT 590 TAD FLAC+1 /GET HIGH-ORDER ARGUMENT 600 PUSHA /SAVE IT 610 PUSHJ /EVALUATE SECOND IF ANY 620 LARG3, ARG /**** RELOCATE **** 630 JMP GET /NONE, JUST GET VALUE 640 JMS RESTEST /RESTORE FIRST ARGUMENT AND TEST IT 650 JMP DEP12B /FIRST FIELD NEEDED 660 JMS I INTEGER /GET SECOND ARGUMENT 670 CDF BUFFLD+10 /GOTO BUFFER FIELD 680 DCA I TBLK /STORE NEW LOW-ORDER 690 TAD FLAC+1 /GET NEW HIGH-ORDER 700 DCA I FUN /STORE IT 710 JMP GETB2 /CONTINUE THERE 720 730 DEP12B, JMS I INTEGER /GET SECOND ARGUMENT 740 CDF BUFFLD /GOTO BUFFER FIELD 750 DCA I TBLK /STORE IT 760 JMP GET12B /CONTINUE THERE 770 780 GET, JMS RESTEST /RESTORE FIRST ARGUMENT AND TEST IT 790 JMP GET12B /FIRST FIELD NEEDED 800 CDF BUFFLD+10 /GOTO BUFFER FIELD 810 TAD I FUN /GET HIGH-ORDER 820 GETCOMM,DCA FLAC+1 /STORE IT 830 GETB2, TAD I TBLK /GET LOW-ORDER 840 CDF 00 /BACK TO OUR FIELD 850 JMP FBLKIN /CONTINUE THERE 860 870 GET12B, CDF BUFFLD /GOTO BUFFER FIELD 880 JMP GETCOMMON /CONTINUE THERE 890 900 RESTEST,.-. /RESTORE AND TEST ARGUMENT ROUTINE 910 POPA /GET HIGH-ORDER 920 DCA FUN /STORE IT 930 POPA /GET LOW-ORDER 940 DCA TBLK /STORE IT 950 NL0001 /SET MASK 960 AND FUN /CHECK IF UPPER FIELD NEEDED 970 SNA CLA /SKIP IF SO 980 JMP I RESTEST /RETURN IF NOT 990 TAD TBLK /GET LOW-ORDER 1000 CLL RAL /*2 FOR DOUBLE-WORDS 1010 DCA TBLK /STORE BACK 1020 NL0001 /SET INCREMENT 1030 TAD TBLK /POINT TO HIGH-ORDER 1040 DCA FUN /STASH THE POINTER 1050 ISZ RESTEST /BUMP RETURN 1060 JMP I RESTEST /TAKE SKIP RETURN 1070 EJECT