.TITLE SCAN ; THIS PROGRAM PROVIDES A MEANS TO SCAN AN ASCII FILE AND PRINT EACH ; LINE, WITH LINE NUMBER, CONTAINING ANY SPECIFIED ASCII CHARACTER ; STRING. ; ; 25 JAN 1972. PAUL LOVE. GULF ELECTRONIC SYSTEMS. ; ; SCAN IS BUILT FROM LEVEL 2A OF THE LIST PROCESSOR. ; LST0030 ; THE CSI FORMAT FOR THIS PROGRAM IS: LST0040 ;  CORRECTION FILE IS NOT SPECIFIED, THE CARD READER WILL BE UPD0320 ; USED. IF THE SOURCE OUTPUT FILE IS NOT SPECIFIED, THE SAME DEVICE UPD0330 ; AND FILE AS THE SOURCE INPUT WILL BE USED WITH A NEW EXTENSION OF UPD0340 ; 'UPD' . IF THE SOURCE OUTPUT DEVICE IS SPECIFIED BUT THE FILE NAME UPD0350 ; IS BLANK, THE FILE NAME AND EXTENSION OF THE SOURCE INPUT FILE WILL UPD0360 ; BE USED. THE EXTENSION WILL STILL BE CHANGED TO 'UPD' IF THE TWO UPD0370 ; FILES ARE ON THE SAME DE,~& ΝC 20xxx),~& Ν 07 7  ,x 0 W 4 ` C`@,D# :,j~ v-rjj-$,d^D> jxxx0 ,*  @ą E5051525354],55565758597071727374- yn ; LST0310 SP=%6 ; LST0320 PC=%7 ; LST0330 ; LST0340 SRLNTH=126. ; CHARACTERS IN SOURCE INPUT BUFFER LST0350 LPLNTH=SRLNTH+8. ; CHARACTERS IN LINE PRINTER BUFFER LST0360 CSLNTH=74.  LST0050 ; [OUTPUT][/DE][/CC]J$D;3""""""""""""""23333333333a ͋,L w:B8 ` 5 &  E >w   f5eU@  [*   & * G &( 8L'4e Q$ BBB"   U@ U e  "U%Gef. U U Bb 0 * B.&0 M &0 & I .GLOBL CLS.,FCL. ; PULL IN THE CLOSE PROCESSOR UPD0890 .GLOBL OPN.,FOP.,LUK.,CKX.,FCR.,LBA.,GMA. ; OPEN PROC. UPD0900 .GLOBL GNM. ; READ/WRITE FOR FILE STRUCTURED DEV. UPD0910 .GLOBL DEL.,DLN. ; PULL IN THE DELETE PROCESSOR UPD0920 .GLOBL DIR. ; PULL IN THE DIRECTOR (LOOK) PROCESSOR UPD0930 .GLOBL CSX.,CSM. ; PULL IN CSI PROCESSOR UPD0940 .GLOBL CVT. J .ASCII / / ; LST0870 ERRADD: .WORD 0,0,0 ; 16 BIT OCTAL WORD LST0880 .BYTE CR,LF ; LST0890 ; LST0900 ; REQUEST TO USER - LINE BUFFER AND HEADER LST0910 COMBFH: .WORD 4 ; MAX BYTE COUNT LST0920 .BYTE 0 KE EXIT PROCESSOR. LST0520 .GLOBL RLS. ; PULL IN RELEASE PROCESSOR. LST0530 .PAGE LST0540 ; LINE BUFFERS AND LINE BUFFER HEADERS LST0550 ; LST0560 ; TITLE LINE AND HEADER LST0570 ; L=014 ; AN ASCII FORM FEED LST0400 CR=015 ; AN ASCII CHARAGE RETURN LST0410 ; LST0420 .GLOBL INR. ; PULL IN INIT PROCESSOR LST0430 .GLOBL OPN.,FOP.,LUK.,CKX.,FCR.,LBA.,GMA. ; OPEN PROCESSORS. LST0440 .GLOBL GNM. ; PULL IN FILE STRUCTURE READ/WRITE. LST0450 .GLOBL CSX.M ; PULL IN NUMERIC CONVERTER UPD0950 .GLOBL XIT. ; PULL IN EXIT PROCESSOR UPD0960 .GLOBL RLS. ; PULL IN RELEASE PROCESSOR UPD0970 .EVEN ; GET OFF ON THE RIGHT FOOT. UPD0980 .PAGE UPD0990 ; UPD1000 ; LINE BUFFERS AND LINE BUFFER HEADERS N ; MODE - NORMAL,FORMATED,ASCII LST0930 .BYTE 0 ; STATUS LST0940 .WORD 4 ; ACTUAL BYTE COUNT LST0950 .BYTE LF,LF,043,VT ; DOWN TWO LINES, A '#', AND WAIT LST0960 ; LST0970 ; SKIP TO NEW PAGE (FORM FEED) LST0980 FFBFH: .WORD 1 ; MAX BYTEO LST0580 LOW =. ; LOWEST PROGRAM ADDRESS LST0590 TITLE: .ASCII /SCAN / ; .ASCII /V001A/ ; TITLE LINE .BYTE CR,LF ; LST0620 TILNTH =.-TITLE ; LENTH OF TITLE LST0630 .EVEN ; GET BACK ON RIGHT FOOT. LST0640 TITLBH: .WORD TILNTH ; MAX BYTE COUNT LST0650P,CSM. ; PULL IN CSI PROCESSOR. LST0460 .GLOBL CVT. ; PULL IN NUMERIC CONVERTER. LST0470 .GLOBL GUT. ; PULL IN MONITOR INTERFACE LST0480 .GLOBL DEL.,DLN. ; PULL IN THE DELETE PROCESSOR LST0490 .GLOBL DIR. ; PULL IN THE DIRECTORY (LOOK) PROC. LST0500 .GLOBL CLS.,FCL. ; PULL IN CLOSE PROCESSOR. LST0510 .GLOBL XIT. ; PULLQ UPD1010 ; UPD1020 ; TITLE LINE AND HEADER UPD1030 ; UPD1040 LOW =. ; LOWEST ADDRESS OF PROGRAM. UPD1050 TITLE: .ASCII /UPDATE/ ; UPD1060 .ASCII / / ; R COUNT LST0990 .BYTE 0 ; MODE - NORMAL,FORMATED,ASCII LST1000 .BYTE 0 ; STATUS LST1010 .WORD 1 ; ACTUAL BYTE COUNT LST1020 .BYTE FF ; FORM FEED LST1030 .EVEN LST1040 .PAGE S .BYTE 04 ; MODE - NORMAL,DUMP,ASCII,FORMATED LST0660 .BYTE 0 ; STATUS LST0670 .WORD TILNTH ; ACTUAL BYTE COUNT LST0680 .WORD TITLE ; POINTER TO BUFFER LST0690 ; LST0700 ; ENDING MESSAGE AND BUFFER HEADER LST0710 ENDLBH: .WORD T IN THE EXIT PROCESSOR. LST0520 .GLOBL RLS. ; PULL IN RELEASE PROCESSOR. LST0530 .PAGE LST0540 ; LINE BUFFERS AND LINE BUFFER HEADERS LST0550 ; LST0560 ; TITLE LINE AND HEADER LST0570 ; U UPD1070 .ASCII /V005B/ ; TITLE LINE UPD1080 .BYTE CR,LF ; UPD1090 TILNTH =.-TITLE ; CAL. LENGTH OF TITLE LINE UPD1100 .EVEN ; GET ON THE RIGHT FOOT HERE ALSO. UPD1110 TITLBH: .WORD TILNTH ; MAX BYTE COUNT UPD1120 .BYTE 04 ; MODE - DUMP, FORMATED, NORMAL, ASCII UPD11V LST1050 ; LST1060 ; INPUT SOURCE BUFFER AND HEADER LST1070 SRBUFH: .WORD SRLNTH ; MAX BYTE COUNT LST1080 .BYTE 024 ; MODE - DUMP,SPECIAL,FORMATED,ASCII LST1090 .BYTE 0 ; STATUS LST1100 .WORD 0 ; ACTUAL BYTE COUNT LST11W6 ; MAX BYTE COUNT LST0720 .BYTE 0 ; MODE - NORMAL,FORMATTED,ASCII LST0730 .BYTE 0 ; STATUS LST0740 .WORD 6 ; ACTUAL BYTE COUNT LST0750 .BYTE LF ; LST0760 .ASCII /END/ ; LST0770 .BYTE CR,LF ; X LST0580 LOW =. ; LOWEST PROGRAM ADDRESS LST0590 TITLE: .ASCII /SCAN / ; .ASCII /V001B/ ; TITLE LINE .BYTE CR,LF ; LST0620 TILNTH =.-TITLE ; LENTH OF TITLE LST0630 .EVEN ; GET BACK ON RIGHT FOOT. LST0640 TITLBH: .WORD TILNTH ; MAX BYTE COUNT LY30 .BYTE 0 ; STATUS UPD1140 .WORD TILNTH ; ACTUAL BYTE COUNT UPD1150 .WORD TITLE ; POINTER TO TITLE LINE BUFFER UPD1160 ; UPD1170 ; ENDING MESSAGE AND LINE HEADER UPD1180 ENDMES: .BYTE LF ; ENDING MESSAGE UPD1190 .ASCIIZ10 .WORD LPBUF ; POINTER TO BUFFER LST1120 ; LST1130 ; LISTING BUFFER AND HEADER LST1140 LPBUFH: .WORD LPLNTH ; MAX BYTE COUNT LST1150 .BYTE 020 ; MODE - SPECIAL,FORMATED,ASCII LST1160 .BYTE 0 ; STATUS LST1170 .WORD [ LST0780 ; LST0790 ; ERROR MESSAGE AND LINE BUFFER HEADER LST0800 ERRLBH: .WORD 14. ; MAX BYTE COUNT LST0810 .BYTE 0 ; MODE - NORMAL,FORMATED,ASCII LST0820 .BYTE 0 ; STATUS LST0830 .WORD 14. ; ACTUAL BYTE COUNT \ST0650 .BYTE 04 ; MODE - NORMAL,DUMP,ASCII,FORMATED LST0660 .BYTE 0 ; STATUS LST0670 .WORD TILNTH ; ACTUAL BYTE COUNT LST0680 .WORD TITLE ; POINTER TO BUFFER LST0690 ; LST0700 ; ENDING MESSAGE AND BUFFER HEADER LST0710 ENDLBH: .W] /END/ ; UPD1195 .BYTE CR,LF ; UPD1200 ENDLNT =.-ENDMES ;LENGTH OF ENDING MESSAGE UPD1210 .EVEN ; UPD1220 ENDLBH: .WORD ENDLNT ; MAX BYTE COUNT OF BUFFER UPD1230 .BYTE 04 ; MODE - DUMP, NORMAL, SPECIAL, ASCII UPD1240 .BYTE 0 ^ LPLNTH ; ACTUAL BYTE COUNT LST1180 LINENU: .ASCII /00000* / ; LINE NUMBER GOES HERE LST1190 LPBUF =. ; MAIN BUFFER LST1200 .=.+SRLNTH ; RESERVE BUFFER LST1210 ; LST1220 ; CSI BUFFER - MUST PRECEED COMMAND INPUT BUFFER LST1230 CMDBUF: .WORD 0,0,0,0,0,0,0 _ LST0840 .ASCII /S2/ ; LST0850 ERRNUM: .ASCII /00/ ; LST0860 .ASCII / / ; LST0870 ERRADD: .WORD 0,0,0 ; 16 BIT OCTAL WORD LST0880 .BYTE CR,LF ; LST0890 ; `ORD 6 ; MAX BYTE COUNT LST0720 .BYTE 0 ; MODE - NORMAL,FORMATTED,ASCII LST0730 .BYTE 0 ; STATUS LST0740 .WORD 6 ; ACTUAL BYTE COUNT LST0750 .BYTE LF ; LST0760 .ASCII /END/ ; LST0770 .BYTE CR,LF a; STATUS UPD1250 .WORD ENDLNT ; ACTUAL BYTE COUNT OF MESSAGE UPD1260 .WORD ENDMES ; ADDRESS OF MESSAGE UPD1270 ; UPD1280 ; ERROR MESSAGE BUFFER AND BUFFER HEADER UPD1290 ERRMES: .ASCII /S2/ ; FIRST OF SYSTEM ERROR MESSAGE UPD1300 ERRNUM: .ASCII /00/ ; ERROR NUMBER b; RES 7 WORDS LST1240 ; LST1250 ; CSI INPUT BUFFER LST1260 CSIBFH: .WORD CSLNTH ; MAX BYTE COUNT LST1270 .BYTE 0 ; MODE - NORMAL,FORMATED,ASCII LST1280 .BYTE 0 ; STATUS LST1290 .WORD 0 ; ACTUAL BYTE COUNc LST0900 ; REQUEST TO USER - LINE BUFFER AND HEADER LST0910 COMBFH: .WORD 4 ; MAX BYTE COUNT LST0920 .BYTE 0 ; MODE - NORMAL,FORMATED,ASCII LST0930 .BYTE 0 ; STATUS LST0940 .WORD 4 ; ACTUAL BYTE COUNT LST0950 .BYTE LF,LF,043,VT ; DOWN TWO LINES, A '#', AND WAIT LST0960 ; d ; LST0780 ; LST0790 ; ERROR MESSAGE AND LINE BUFFER HEADER LST0800 ERRLBH: .WORD 14. ; MAX BYTE COUNT LST0810 .BYTE 0 ; MODE - NORMAL,FORMATED,ASCII LST0820 .BYTE 0 ; STATUS LST0830 .WORD 14. ; ACTUAL BYTE e UPD1310 .ASCII / / ; UPD1320 ERRADD: .WORD 0,0,0 ; 16 BIT OCTAL NUMBER. UPD1330 .BYTE CR ; ASCII CR TO TERMINATE MESSAGE UPD1340 .BYTE LF ; ASCII LINE FEED UPD1350 ERRLNT =.-ERRMES ; LENGTH OF ERROR MESSAGE UPD1360 ERRLBH: .WORD ERRLNT ; MAX LENGTH OF ERROR LINE BUFFER fT LST1300 CSIBUF =. ; BUFFER ADRRESS LST1310 .=.+CSLNTH ; RES BUFFER LST1320 .PAGE LST1330 CS2BLK: .WORD CMDBUF ; POINTER TO CSI BLOCK LST1340 .WORD 0 ; POINTER TO LINK BLOCK LST1350 .WORD 0 ; POINTER TO FILE BLOCK g LST0970 ; SKIP TO NEW PAGE (FORM FEED) LST0980 FFBFH: .WORD 1 ; MAX BYTE COUNT LST0990 .BYTE 0 ; MODE - NORMAL,FORMATED,ASCII LST1000 .BYTE 0 ; STATUS LST1010 .WORD 1 ; ACTUAL BYTE COUNT LST1020 .BYTE FF hCOUNT LST0840 .ASCII /S2/ ; LST0850 ERRNUM: .ASCII /00/ ; LST0860 .ASCII / / ; LST0870 ERRADD: .WORD 0,0,0 ; 16 BIT OCTAL WORD LST0880 .BYTE CR,LF ; LST0890 ; i UPD1370 .BYTE 04 ; MODE - DUMP, NORMAL, FORMATED, ASCII UPD1380 .BYTE 0 ; STATUS UPD1390 .WORD ERRLNT ; ACTUAL BUFFER LENGTH UPD1400 .WORD ERRMES ; ADDRESS OF BUFFER UPD1410 ; UPD1420 ; LINE BUFFER AND HEADER FOR CSI REQUEST TO USER (#) UPD1430 COMBj LST1360 .PAGE LST1370 ; LST1380 ; LINK BLOCK TABLES LST1390 ; LST1400 ; COMMAND INPUT LINK BLOCK LST1410 .WORD 0 ; ERROR RETURN LST1420 CMLKk ; FORM FEED LST1030 .EVEN LST1040 .PAGE LST1050 ; LST1060 ; INPUT SOURCE BUFFER AND HEADER LST1070 SRBUFH: .WORD SRLNTH ; MAX BYTE COUNT LST1080 .BYTE 024 ; MODE - Dl LST0900 ; REQUEST TO USER - LINE BUFFER AND HEADER LST0910 COMBFH: .WORD 4 ; MAX BYTE COUNT LST0920 .BYTE 0 ; MODE - NORMAL,FORMATED,ASCII LST0930 .BYTE 0 ; STATUS LST0940 .WORD 4 ; ACTUAL BYTE COUNT LST0950 .BYTE LF,LF,043,VT ; DOWN TWO LINES, A '#', AND WAIT LST0960 mFH: .WORD 4 ; MAX BYTE COUNT UPD1440 .BYTE 0 ; MODE - NORMAL, FORMATED, ASCII UPD1450 .BYTE 0 ; STATUS UPD1460 .WORD 4 ; ACTUAL BYTE COUNT UPD1470 .BYTE LF,LF ; SPACE DOWN TWO LINES UPD1480 .BYTE 043 ; AN ASCII '#' UPD1490 .BYTE VT nBK: .WORD 0 ; LINK POINTER LST1430 .RAD50 /LSI/ ; DATASET NAME LST1440 .BYTE 1 ; NO. WORDS TO FOLLOW LST1450 .BYTE 0 ; UNIT NUMBER LST1460 .RAD50 /KB/ ; DEVICE - KEYBOARD LST1470 ; LST1480 ; COMMAN OUTPUT LINK BoUMP,SPECIAL,FORMATED,ASCII LST1090 .BYTE 0 ; STATUS LST1100 .WORD 0 ; ACTUAL BYTE COUNT LST1110 .WORD LPBUF ; POINTER TO BUFFER LST1120 ; LST1130 ; LISTING BUFFER AND HEADER LST1140 LPBUFH: .WORD LPLNTH ; MAX BYTE COUNT p; LST0970 ; SKIP TO NEW PAGE (FORM FEED) LST0980 FFBFH: .WORD 1 ; MAX BYTE COUNT LST0990 .BYTE 0 ; MODE - NORMAL,FORMATED,ASCII LST1000 .BYTE 0 ; STATUS LST1010 .WORD 1 ; ACTUAL BYTE COUNT LST1020 .BYTE FFq ; AN ASCII VERTICAL TAB UPD1500 ; UPD1510 ; LINE PRINTER LINE BUFFER AND HEADER UPD1520 .IFG LPLNTH ; IS THERE A LINE PRINTER? UPD1530 LPBUFH: .WORD LPLNTH ; MAX BYTE COUNT UPD1540 .BYTE 020 ; MODE - SPECIAL, FORMATED, ACSII UPD1550 .BYTE 0 ; STATUSrLOCK LST1490 .WORD 0 ; ERROR RETURN LST1500 COLKBK: .WORD 0 ; LINK POINTER LST1510 .RAD50 /LSO/ ; DATASET NAME LST1520 .BYTE 1 ; NO. WORDS TO FOLLOW LST1530 .BYTE 0 ; UNIT NUMBER LST1540 .RAD50 /KB/ ; DEVICEs LST1150 .BYTE 020 ; MODE - SPECIAL,FORMATED,ASCII LST1160 .BYTE 0 ; STATUS LST1170 .WORD LPLNTH ; ACTUAL BYTE COUNT LST1180 LINENU: .ASCII /00000* / ; LINE NUMBER GOES HERE LST1190 LPBUF =. ; MAIN BUFFER LST1200 .=.+SRLNTH ; RESERVE BUFFER LST12t ; FORM FEED LST1030 .EVEN LST1040 .PAGE LST1050 ; LST1060 ; INPUT SOURCE BUFFER AND HEADER LST1070 SRBUFH: .WORD SRLNTH ; MAX BYTE COUNT LST1080 .BYTE 024 ; MOu UPD1560 .WORD LPLNTH ; ACTUAL BYTE COUNT UPD1570 LINENU: .ASCII /00000* / ; LINE NUMBER IN SOURCE LISTING UPD1580 LPBUF =. ; BUFFER ADDRESS UPD1590 .=.+SRLNTH ; RES BUFFER UPD1600 .PAGE UPD1610 ; v - KEYBOARD LST1550 ; LST1560 ; SOURCE INPUT LINK BLOCK LST1570 .WORD 0 ; ERROR RETURN LST1580 SILKBK: .WORD 0 ; LINK POINTER LST1590 .RAD50 /SOR/ ; DATASET NAME LST1600 .BYTE 1 ; NO. WORDS TO FOLLOW w10 ; ; SCAN BUFFER AND HEADER SCBUFH: .WORD SCLNTH ; MAX BYTE COUNT .BYTE 0 ; MODE - NORMAL,FORMATTED,ASCII .BYTE 0 ; STATUS .WORD 0 ; ACTUAL BYTE COUNT SCBUF =. ; SCAN STRING BUFFER .=.+SCLNTH ; ; ; STRING MESSAGE AND HEADER SCMBFH: .WORD 9. ; MAX BYTE COUNT .BYTE 0 ; MODE - NORMAL,FORMATED,ASCII .BYTE 0 xDE - DUMP,SPECIAL,FORMATED,ASCII LST1090 .BYTE 0 ; STATUS LST1100 .WORD 0 ; ACTUAL BYTE COUNT LST1110 .WORD LPBUF ; POINTER TO BUFFER LST1120 ; LST1130 ; LISTING BUFFER AND HEADER LST1140 LPBUFH: .WORD LPLNTH ; MAX BYTE COUNT y UPD1620 ; SOURCE INPUT/OUTPUT LINE BUFFER AND HEADER UPD1630 SRBUFH: .WORD SRLNTH ; MAX BYTE COUNT FOR BUFFER UPD1640 .BYTE 020 ; MODE - SPECIAL, FORMATED, ASCII UPD1650 .BYTE 0 ; STATUS UPD1660 .WORD 0 ; ACTUAL BYTE COUNT (TRANSFERED) UPD1670 SRBUF =. ; BUFFER ADDRESS UPDz LST1610 .BYTE 0 ; UNIT NUMBER LST1620 .RAD50 /DF/ ; DEVICE - DISK LST1630 ; LST1640 ; SOURCE OUTPUT (LISTING) LINK BLOCK LST1650 .WORD 0 ; ERROR RETURN LST1660 SOLKBK: .WORD 0 ; LINK POINTER LST{ ; STATUS .WORD 9. ; ACTUAL BYTE COUNT .ASCII /STRING: / ; MESSAGE .BYTE VT ; .EVEN ; GET RID OF ODD BYTE ADDRESS ; LST1220 ; CSI BUFFER - MUST PRECEED COMMAND INPUT BUFFER LST1230 CMDBUF: .WORD 0,0,0,0,0,0,0 ; RES 7 WORDS LST1240 ; | LST1150 .BYTE 020 ; MODE - SPECIAL,FORMATED,ASCII LST1160 .BYTE 0 ; STATUS LST1170 .WORD LPLNTH ; ACTUAL BYTE COUNT LST1180 LINENU: .ASCII /00000* / ; LINE NUMBER GOES HERE LST1190 LPBUF =. ; MAIN BUFFER LST1200 .=.+SRLNTH ; RESERVE BUFFER }1680 .=.+SRLNTH ; RES BUFFER UPD1690 ; UPD1700 ; LINE BUFFER HEADER FOR LISTING OF SOURCE OUTPUT FILE UPD1710 SLSTBH: .WORD SRLNTH ; MAX BYTE COUNT UPD1720 .BYTE 024 ; MODE - DUMP, SPECIAL, FORMATED, ASCII UPD1730 .BYTE 0 ; STATUS UPD1740 .WOR~1670 .RAD50 /LIS/ ; DATASET NAME LST1680 .BYTE 5 ; NO. WORDS TO FOLLOW LST1690 .BYTE 0 ; UNIT NUMBER LST1700 .RAD50 /LP/ ; DEVICE LINE PRINTER LST1710 .WORD 0 ; NO. WORDS IN SWITCH LST1720 .WORD 0 ; SWITCH LST1730 .WOR LST1250 ; CSI INPUT BUFFER LST1260 CSIBFH: .WORD CSLNTH ; MAX BYTE COUNT LST1270 .BYTE 0 ; MODE - NORMAL,FORMATED,ASCII LST1280 .BYTE 0 ; STATUS LST1290 .WORD 0 ; ACTUAL BYTE COUNT LST1300 CSIBUF =. ; BUFFER ADRRESS LST1210 ; ; SCAN BUFFER AND HEADER SCBUFH: .WORD SCLNTH ; MAX BYTE COUNT .BYTE 0 ; MODE - NORMAL,FORMATTED,ASCII .BYTE 0 ; STATUS .WORD 0 ; ACTUAL BYTE COUNT SCBUF =. ; SCAN STRING BUFFER .=.+SCLNTH ; ; ; STRING MESSAGE AND HEADER SCMBFH: .WORD 9. ; MAX BYTE COUNT .BYTE 0 ; MODE - NORMAL,FORMATED,ASCII .BYTE 0 D 0 ; ACTUAL BYTE COUNT UPD1750 .WORD LPBUF ; ADDRESS OF ACTUAL LINE BUFFER UPD1760 .ENDC ; LAST OF LINE PRINTER UPD1770 ; UPD1780 ; CSI BUFFER - THIS MUST PRECEED THE COMMAND LINE BUFFER UPD1790 CMDBUF: .WORD 0,0,0,0,0,0,0 ; RES 7 WORDS FOR IT UPD1800 ; D 0 ; NO. WORDS IN SWITCH LST1740 .WORD 0 ; SWITCH LST1750 .PAGE LST1760 ; LST1770 ; FILE BLOCKS LST1780 ; LST1790 ; COMMAND INPUT FILE BLOCK LST1310 .=.+CSLNTH ; RES BUFFER LST1320 .PAGE LST1330 CS2BLK: .WORD CMDBUF ; POINTER TO CSI BLOCK LST1340 .WORD 0 ; POINTER TO LINK BLOCK LST1350 .WORD 0 ; POINTER TO FILE BLOCK LST1360 .PAGE LST1370 ; ; STATUS .WORD 9. ; ACTUAL BYTE COUNT .ASCII /STRING: / ; MESSAGE .BYTE VT ; .EVEN ; GET RID OF ODD BYTE ADDRESS ; LST1220 ; CSI BUFFER - MUST PRECEED COMMAND INPUT BUFFER LST1230 CMDBUF: .WORD 0,0,0,0,0,0,0 ; RES 7 WORDS LST1240 ; UPD1810 ; CSI INPUT LINE BUFFER AND HEADER UPD1820 CSIBFH: .WORD CSLNTH ; MAX BYTE COUNT UPD1830 .BYTE 0 ; MODE - NORMAL, FORMATED, ASCII UPD1840 .BYTE 0 ; STATUS UPD1850 .WORD 0 ; ACTUAL BYTE COUNT UPD1860 CSIBUF =. ; BUFFER ADDRESS LST1800 .WORD 0 ; ERROR RETURN LST1810 .BYTE 4 ; HOW OPENED (INPUT) LST1820 .BYTE 0 ; ERROR CODE LST1830 CMFLBK: .WORD 0 ; FILE NAME - WORD 1 LST1840 .WORD 0 ; FILE NAME - WORD 2 LST1850 .WORD 0 ; FILE NAME EXTE LST1380 ; LINK BLOCK TABLES LST1390 ; LST1400 ; COMMAND INPUT LINK BLOCK LST1410 .WORD 0 ; ERROR RETURN LST1420 CMLKBK: .WORD 0 ; LINK POINTER LST1430 .RAD50 /LSI/ LST1250 ; CSI INPUT BUFFER LST1260 CSIBFH: .WORD CSLNTH ; MAX BYTE COUNT LST1270 .BYTE 0 ; MODE - NORMAL,FORMATED,ASCII LST1280 .BYTE 0 ; STATUS LST1290 .WORD 0 ; ACTUAL BYTE COUNT LST1300 CSIBUF =. ; BUFFER ADRRESS UPD1870 .=.+CSLNTH ; RES BUFFER UPD1880 ; UPD1890 ; CORRECTION INPUT BUFFER AND HEADER UPD1900 CRIBFH: .WORD CRLNTH ; MAX BYTE COUNT UPD1910 .BYTE 0 ; MODE - NORMAL, FORMATED, ASCII UPD1920 .BYTE 0 ; STATUS NSION LST1860 .WORD 0 ; USER CODE [GN,UN] LST1870 .WORD 0233 ; PROTECT CODE LST1880 ; LST1890 ; COMMAND OUTPUT FILE BLOCK LST1900 .WORD 0 ; ERROR RETURN LST1910 .BYTE 2 ; HOW OPENED - OUTPUT ; DATASET NAME LST1440 .BYTE 1 ; NO. WORDS TO FOLLOW LST1450 .BYTE 0 ; UNIT NUMBER LST1460 .RAD50 /KB/ ; DEVICE - KEYBOARD LST1470 ; LST1480 ; COMMAN OUTPUT LINK BLOCK LST1490 .WORD 0 ; ERROR LST1310 .=.+CSLNTH ; RES BUFFER LST1320 .PAGE LST1330 CS2BLK: .WORD CMDBUF ; POINTER TO CSI BLOCK LST1340 .WORD 0 ; POINTER TO LINK BLOCK LST1350 .WORD 0 ; POINTER TO FILE BLOCK LST1360 .PAGE LST1370 UPD1930 .WORD 0 ; ACTUAL BYTE COUNT UPD1940 CRBUF =. ; BUFFER ADDRESS UPD1950 .=.+CRLNTH ; RES BUFFER UPD1960 .PAGE UPD1970 ; UPD1980 ; CSI2 BLOCK UPD1990 ; LST1920 .BYTE 0 ; ERROR CODE LST1930 COFLBK: .WORD 0 ; FILE NAME - WORD 1 LST1940 .WORD 0 ; FILE NAME - WORD 2 LST1950 .WORD 0 ; FILE NAME EXTENSION LST1960 .WORD 0 ; USER CODE [GN,UN] LST1970 .WORD 0233 ; PROTECT CODE LST1980 ; RETURN LST1500 COLKBK: .WORD 0 ; LINK POINTER LST1510 .RAD50 /LSO/ ; DATASET NAME LST1520 .BYTE 1 ; NO. WORDS TO FOLLOW LST1530 .BYTE 0 ; UNIT NUMBER LST1540 .RAD50 /KB/ ; DEVICE - KEYBOARD LST1550 ; ; LST1380 ; LINK BLOCK TABLES LST1390 ; LST1400 ; COMMAND INPUT LINK BLOCK LST1410 .WORD 0 ; ERROR RETURN LST1420 CMLKBK: .WORD 0 ; LINK POINTER LST1430 .RAD50 UPD2000 CS2BLK: .WORD CMDBUF ; POINTER TO CSI BUFFER UPD2010 .WORD 0 ; POINTER TO LINK BLOCK UPD2020 .WORD 0 ; POINTER TO FILE BLOCK UPD2030 .PAGE UPD2040 ; UPD2050 ; LINK BLOCK TABLES LST1990 ; SOURCE INPUT FILE BLOCK LST2000 .WORD 0 ; ERROR RETURN LST2010 .BYTE 4 ; HOW OPENED - INPUT LST2020 .BYTE 0 ; ERROR CODE LST2030 SIFLBK: .WORD 0 ; FILE NAME - WORD 1 LST2040 .WORD 0 LST1560 ; SOURCE INPUT LINK BLOCK LST1570 .WORD 0 ; ERROR RETURN LST1580 SILKBK: .WORD 0 ; LINK POINTER LST1590 .RAD50 /SOR/ ; DATASET NAME LST1600 .BYTE 1 ; NO. WORDS TO FOLLOW LST1610 .BYTE 0 ; UNIT NUMBER LST/LSI/ ; DATASET NAME LST1440 .BYTE 1 ; NO. WORDS TO FOLLOW LST1450 .BYTE 0 ; UNIT NUMBER LST1460 .RAD50 /KB/ ; DEVICE - KEYBOARD LST1470 ; LST1480 ; COMMAN OUTPUT LINK BLOCK LST1490 .WORD 0 ; UPD2060 ; UPD2070 ; SOURCE INPUT DATASET LINK BLOCK UPD2080 .WORD ERROR ; ERROR RETURN ADDRESS FOR PACKAGE UPD2090 SILKBK: .WORD 0 ; LINK POINTER (MONITOR) UPD2100 .RAD50 /SRI/ ; LOGICAL DATASET NAME UPD2110 .BYTE 3 ; NO. ; FILE NAME - WORD 2 LST2050 .WORD 0 ; FILE NAME EXTENSION LST2060 .WORD 0 ; USER CODE [GN,UN] LST2070 .WORD 0233 ; PROTECT CODE LST2080 ; LST2090 ; SOURCE OUTPUT (LISTING) FILE BLOCK LST2100 .WORD 0 ; ERRO1620 .RAD50 /DF/ ; DEVICE - DISK LST1630 ; LST1640 ; SOURCE OUTPUT (LISTING) LINK BLOCK LST1650 .WORD 0 ; ERROR RETURN LST1660 SOLKBK: .WORD 0 ; LINK POINTER LST1670 .RAD50 /LIS/ ; DATASET NAME LST1680 .BYTERROR RETURN LST1500 COLKBK: .WORD 0 ; LINK POINTER LST1510 .RAD50 /LSO/ ; DATASET NAME LST1520 .BYTE 1 ; NO. WORDS TO FOLLOW LST1530 .BYTE 0 ; UNIT NUMBER LST1540 .RAD50 /KB/ ; DEVICE - KEYBOARD LST1550 ; OF WORDS IN REST OF BLOCK UPD2120 .BYTE 0 ; UNIT NUMBER UPD2130 .RAD50 /DF/ ; PHYSICAL DEVICE NAME UPD2140 .WORD 0 ; SWITCH CHARACTERS (IF ANY) UPD2150 .WORD 0 ; SWITCH CHARACTERS UPD2160 ; UPD2170 ; SOURCE OUTPUT DATASET LINK BLOCK R RETURN LST2110 .BYTE 2 ; HOW OPENED - OUTPUT LST2120 .BYTE 0 ; ERROR CODE LST2130 SOFLBK: .WORD 0 ; FILE NAME - WORD 1 LST2140 .WORD 0 ; FILE NAME - WORD 2 LST2150 .WORD 0 ; FILE NAME EXTENSION LST2160 .WORD 0 ; USER CODE [GN,UN] E 5 ; NO. WORDS TO FOLLOW LST1690 .BYTE 0 ; UNIT NUMBER LST1700 .RAD50 /LP/ ; DEVICE LINE PRINTER LST1710 .WORD 0 ; NO. WORDS IN SWITCH LST1720 .WORD 0 ; SWITCH LST1730 .WORD 0 ; NO. WORDS IN SWITCH LST1740 .WORD 0 LST1560 ; SOURCE INPUT LINK BLOCK LST1570 .WORD 0 ; ERROR RETURN LST1580 SILKBK: .WORD 0 ; LINK POINTER LST1590 .RAD50 /SOR/ ; DATASET NAME LST1600 .BYTE 1 ; NO. WORDS TO FOLLOW LST1610 .BYTE 0 ; UNIT NUMBER UPD2180 .WORD ERROR ; ERROR RETURN ADDRESS UPD2190 SOLKBK: .WORD 0 ; LINK POINTER UPD2200 .RAD50 /SRO/ ; DATASET NAME UPD2210 .BYTE 3 ; WORDS FOLLOW UPD2220 .BYTE 0 ; UNIT NUMBER UPD2230 .RAD50 /DF/ ; PHYSICAL DEVICE U LST2170 .WORD 0233 ; PROTECT CODE LST2180 .PAGE LST2190 START =. ; STARTING LOCATION LST2200 MOV #LOW,SP ; RESET STACK POINTER LST2210 MOV #ST100,-(SP) ; SET RESTART ADDRESS LST2220 MOV #2,-(SP) ; L ; SWITCH LST1750 .PAGE LST1760 ; LST1770 ; FILE BLOCKS LST1780 ; LST1790 ; COMMAND INPUT FILE BLOCK LST1800 .WORD 0 ; ERROR RETURN LST1620 .RAD50 /DF/ ; DEVICE - DISK LST1630 ; LST1640 ; SOURCE OUTPUT (LISTING) LINK BLOCK LST1650 .WORD 0 ; ERROR RETURN LST1660 SOLKBK: .WORD 0 ; LINK POINTER LST1670 .RAD50 /LIS/ ; DATASET NAME LST1680 PD2240 .WORD 0 ; SWITCH UPD2250 .WORD 0 ; SWITCH CHARACTERS UPD2260 ; UPD2270 ; CORRECTION DATASET LINK BLOCK UPD2280 .WORD ERROR ; ERROR ADDRESS UPD2290 CRLKBK: .WORD 0 ; LINK POINTER UPD2300 .RST2230 EMT 41 ; LST2240 MOV #COLKBK,-(SP) ; INITALIZE KB FOR OUTPUT LST2250 EMT 6 ; LST2260 MOV #CMLKBK,-(SP) ; INITALIZE KB FOR INPUT LST2270 EMT 6 ; LST2280 MOV #COFLBK,-(SP) ; OPEN KB FOR OUTPUT LST2290 MO LST1810 .BYTE 4 ; HOW OPENED (INPUT) LST1820 .BYTE 0 ; ERROR CODE LST1830 CMFLBK: .WORD 0 ; FILE NAME - WORD 1 LST1840 .WORD 0 ; FILE NAME - WORD 2 LST1850 .WORD 0 ; FILE NAME EXTENSION LST1860 .WORD 0 ; USER CODE [GN,UN] .BYTE 5 ; NO. WORDS TO FOLLOW LST1690 .BYTE 0 ; UNIT NUMBER LST1700 .RAD50 /LP/ ; DEVICE LINE PRINTER LST1710 .WORD 0 ; NO. WORDS IN SWITCH LST1720 .WORD 0 ; SWITCH LST1730 .WORD 0 ; NO. WORDS IN SWITCH LST1740 .WORD 0 AD50 /CRU/ ; DATASET NAME UPD2310 .BYTE 3 ; WORDS FOLLOW UPD2320 .BYTE 0 ; UNIT NUMBER UPD2330 .RAD50 /CR/ ; DEVICE NAME UPD2340 .WORD 0 ; SWITCH UPD2350 .WORD 0 ; SWITCH CHARACTERS UPD2360 ; V #COLKBK,-(SP) ; LST2300 EMT 16 ; LST2310 MOV #CMFLBK,-(SP) ; OPEN KB FOR INPUT LST2330 MOV #CMLKBK,-(SP) ; LST2320 EMT 16 ; LST2340 MOV #TITLBH,-(SP) ; WRITE PROCESSOR TITLE LST2350 MOV #COLKBK,-(SP LST1870 .WORD 0233 ; PROTECT CODE LST1880 ; LST1890 ; COMMAND OUTPUT FILE BLOCK LST1900 .WORD 0 ; ERROR RETURN LST1910 .BYTE 2 ; HOW OPENED - OUTPUT LST1920 .BYTE 0 ; ERROR CODE LST1930 CO ; SWITCH LST1750 .PAGE LST1760 ; LST1770 ; FILE BLOCKS LST1780 ; LST1790 ; COMMAND INPUT FILE BLOCK LST1800 .WORD 0 ; ERROR RE UPD2370 ; LINE PRINTER DATASET LINK BLOCK UPD2380 .IFG LPLNTH ; DO WE HAVE A LINE PRINTER? UPD2390 .WORD ERROR ; ERROR RETURN ADDRESS UPD2400 LPLKBK: .WORD 0 ; LINK POINTER UPD2410 .RAD50 /LPU/ ; DATASET NAME UPD2420 .BYTE 1 ; WORDS FOLLOW) ; LST2360 EMT 2 ; LST2370 MOV #COLKBK,-(SP) ; WAIT FOR I/O TO FINISH LST2380 EMT 1 ; LST2390 ST100 =. ; LST2400 CLR R0 ; RESET LINE NUMBER COUNTER LST2410 MOV #LINENU,R1 ; GET ADDRESS FLBK: .WORD 0 ; FILE NAME - WORD 1 LST1940 .WORD 0 ; FILE NAME - WORD 2 LST1950 .WORD 0 ; FILE NAME EXTENSION LST1960 .WORD 0 ; USER CODE [GN,UN] LST1970 .WORD 0233 ; PROTECT CODE LST1980 ; LST1990 ; SOURCE INPUT FILE TURN LST1810 .BYTE 4 ; HOW OPENED (INPUT) LST1820 .BYTE 0 ; ERROR CODE LST1830 CMFLBK: .WORD 0 ; FILE NAME - WORD 1 LST1840 .WORD 0 ; FILE NAME - WORD 2 LST1850 .WORD 0 ; FILE NAME EXTENSION LST1860 .WORD 0 ; USER CODE [GN,UN] (NO SWITCHS) UPD2430 .BYTE 0 ; UNIT NUMBER UPD2440 .RAD50 /LP/ ; DEVICE NAME UPD2450 .ENDC UPD2460 ; UPD2470 ; COMMAND DATASET LINK BLOCK UPD2480 .WORD ERROR ; ERROR RETURN ADDRESS OF LINE NUMBER (ASCII) LST2420 ; IN PRINT BUFFER. LST2430 MOV #3,R3 ; SET UP CODE FOR BINARY TO DECIMAL CONV LST2440 MOV #1,R5 ; SET R5=1 FOR LATER USE LST2450 CLR DELETE ; RESET DELETE SWITCH FLAG LST2460 CLR CONCAT ; RESET CONCATINATE SWITCH FLAG LST2470 MOV #COMBFH,-(SP) ; PRINT '#' FOR CSI INPUT BLOCK LST2000 .WORD 0 ; ERROR RETURN LST2010 .BYTE 4 ; HOW OPENED - INPUT LST2020 .BYTE 0 ; ERROR CODE LST2030 SIFLBK: .WORD 0 ; FILE NAME - WORD 1 LST2040 .WORD 0 ; FILE NAME - WORD 2 LST2050 .WORD 0 ; FILE LST1870 .WORD 0233 ; PROTECT CODE LST1880 ; LST1890 ; COMMAND OUTPUT FILE BLOCK LST1900 .WORD 0 ; ERROR RETURN LST1910 .BYTE 2 ; HOW OPENED - OUTPUT LST1920 .BYTE 0 ; ERROR CODE LST19 UPD2490 CMLKBK: .WORD 0 ; LINK POINTER UPD2500 .RAD50 /CMI/ ; DATASET NAME UPD2510 .BYTE 1 ; WORDS FOLLOW (NO SWITCH) UPD2520 .BYTE 0 ; UNIT NUMBER UPD2530 .RAD50 /KB/ ; DEVICE NAME - KEYBOARD UPD2540 ; UPD2550 LST2480 MOV #COLKBK,-(SP) ; LST2490 EMT 2 ; LST2500 MOV #COLKBK,-(SP) ; WAIT FOR I/O TO FINISH LST2510 EMT 1 ; LST2520 MOV #CSIBFH,-(SP) ; READ CSI STRING LST2530 MOV #CMLKBK,-(SP) ; LST2540 NAME EXTENSION LST2060 .WORD 0 ; USER CODE [GN,UN] LST2070 .WORD 0233 ; PROTECT CODE LST2080 ; LST2090 ; SOURCE OUTPUT (LISTING) FILE BLOCK LST2100 .WORD 0 ; ERROR RETURN LST2110 .BYTE 2 ; HOW OPENED - OUTPUT 30 COFLBK: .WORD 0 ; FILE NAME - WORD 1 LST1940 .WORD 0 ; FILE NAME - WORD 2 LST1950 .WORD 0 ; FILE NAME EXTENSION LST1960 .WORD 0 ; USER CODE [GN,UN] LST1970 .WORD 0233 ; PROTECT CODE LST1980 ; LST1990 ; SOURCE INPUT; COMMAND DATASET LINK BLOCK (OUTPUT) UPD2560 .WORD ERROR ; ERROR RETURN ADDRESS UPD2570 COLKBK: .WORD 0 ; LINK POINTER UPD2580 .RAD50 /CMO/ ; DATASET LOGICAL NAME UPD2590 .BYTE 1 ; WORDS THAT FOLLOW (NO SWITCHS) UPD2600 .BYTE 0 ; UNIT NUMBER UPD2610 .RAD50 /K EMT 4 ; LST2550 MOV #CMLKBK,-(SP) ; WAIT FOR I/O TO FINISH LST2560 EMT 1 ; LST2570 TSTB CSIBFH+3 ; TEST STATUS OF CSI READ LST2580 BEQ ST120 ; BRANCH IF OK (=0). LST2590 EMT 60 ; EXIT ON NON-ZERO STATUS. (EOF) LST2600 ST120: MOV #C LST2120 .BYTE 0 ; ERROR CODE LST2130 SOFLBK: .WORD 0 ; FILE NAME - WORD 1 LST2140 .WORD 0 ; FILE NAME - WORD 2 LST2150 .WORD 0 ; FILE NAME EXTENSION LST2160 .WORD 0 ; USER CODE [GN,UN] LST2170 .WORD 0233 ; PROTECT CODE L FILE BLOCK LST2000 .WORD 0 ; ERROR RETURN LST2010 .BYTE 4 ; HOW OPENED - INPUT LST2020 .BYTE 0 ; ERROR CODE LST2030 SIFLBK: .WORD 0 ; FILE NAME - WORD 1 LST2040 .WORD 0 ; FILE NAME - WORD 2 LST2050 .WORD 0 B/ ; DEVICE NAME - KEYBOARD UPD2620 .PAGE UPD2630 ; UPD2640 ; FILE BLOCK TABLES UPD2650 ; UPD2660 ; SOURCE INPUT FILE BLOCK UPD2670 .WORD ERROR ; ERMDBUF,-(SP) ; USE CSI1 TO CONDENSE STRING LST2610 EMT 56 ; LST2620 TST (SP)+ ; TEST STATUS ON TOP OF STACK LST2630 BEQ ST150 ; JUMP IF ALL OK. LST2640 MOV -2(SP),R5 ; GET ADDRESS OF BAD BYTE LST2645 MOV A70,ERRNUM ; SET ERROR NUMBER LST2650 TST -(SP) ; MOST2180 .PAGE LST2190 START =. ; STARTING LOCATION LST2200 MOV #LOW,SP ; RESET STACK POINTER LST2210 MOV #ST100,-(SP) ; SET RESTART ADDRESS LST2220 MOV #2,-(SP) ; LST2230 EMT 41 ; LST2240 MO; FILE NAME EXTENSION LST2060 .WORD 0 ; USER CODE [GN,UN] LST2070 .WORD 0233 ; PROTECT CODE LST2080 ; LST2090 ; SOURCE OUTPUT (LISTING) FILE BLOCK LST2100 .WORD 0 ; ERROR RETURN LST2110 .BYTE 2 ; HOW OPENED - OUTROR RETURN UPD2680 .BYTE 0 ; HOW OPENED UPD2690 .BYTE 0 ; ERROR CODE UPD2700 SIFLBK: .WORD 0 ; FILE NAME - WORD 1 UPD2710 .WORD 0 ; FILE NAME - WORD 2 UPD2720 .WORD 0 ; FILE NAME EXTENSION UPD2730 .WORD 0 ; USER ID CODE [GN,UN]VE STACK POINTER BACK TO ERROR STATU LST2660 JSR PC,ERR ; GO DO ERROR STUFF LST2670 MOVB #'?,(R5)+ ; PUT A '?' IN PLACE OF THE BAD BYTE LST267A MOVB #CR,(R5)+ ; PUT IN A CR AFTER THE ? LST267B MOVB #LF,(R5)+ ; AND A LF TO TERMINATE THE LINE LST267C SUB #CSIBUF,R5 ; GET LENGTH OF OUTPUT MESSAGE LST267D MOV R5,CSIBFH+4 ; AND PLACE IT IN THE V #COLKBK,-(SP) ; INITALIZE KB FOR OUTPUT LST2250 EMT 6 ; LST2260 MOV #CMLKBK,-(SP) ; INITALIZE KB FOR INPUT LST2270 EMT 6 ; LST2280 MOV #COFLBK,-(SP) ; OPEN KB FOR OUTPUT LST2290 MOV #COLKBK,-(SP) ; LST2300 EMT 16 PUT LST2120 .BYTE 0 ; ERROR CODE LST2130 SOFLBK: .WORD 0 ; FILE NAME - WORD 1 LST2140 .WORD 0 ; FILE NAME - WORD 2 LST2150 .WORD 0 ; FILE NAME EXTENSION LST2160 .WORD 0 ; USER CODE [GN,UN] LST2170 .WORD 0233 ; PROTECT CODE (OCTAL) UPD2740 .WORD 0233 ; BYTE 1 SPARE; BYTE 2 PROTECTION CODE UPD2750 ; UPD2760 ; SOURCE OUTPUT FILE BLOCK UPD2770 .WORD ERROR ; ERROR RETURN UPD2780 .BYTE 0 ; HOW OPENED UPD2790 .BYTE 0 ; ERROR CODE LINE HEADER LST267E MOV #CSIBFH,-(SP) ; WRITE THE CSI STRING WITH THE ? OUT LST267F MOV #COLKBK,-(SP) ; LST267G EMT 2 ; LST267H MOV #COLKBK,-(SP) ; WAIT FOR THE I/O TO COMPLET. LST267I EMT 1 ; LST267J JMP ST100 ; GO TRY AGAIN ; LST2310 MOV #CMFLBK,-(SP) ; OPEN KB FOR INPUT LST2330 MOV #CMLKBK,-(SP) ; LST2320 EMT 16 ; LST2340 MOV #TITLBH,-(SP) ; WRITE PROCESSOR TITLE LST2350 MOV #COLKBK,-(SP) ; LST2360 EMT 2 ; LST2180 .PAGE LST2190 START =. ; STARTING LOCATION LST2200 MOV #LOW,SP ; RESET STACK POINTER LST2210 MOV #ST100,-(SP) ; SET RESTART ADDRESS LST2220 MOV #2,-(SP) ; LST2230 EMT 41 ; LST2240 UPD2800 SOFLBK: .WORD 0 ; FILE NAME - WORD 1 UPD2810 .WORD 0 ; FILE NAME - WORD 2 UPD2820 .WORD 0 ; FILE NAME EXTENSION UPD2830 .WORD 0 ; USER CODE [GN,UN] UPD2840 .WORD 0233 ; BYTE 1 SPARE; BYTE 0 PROTECTION CODE UPD2850 ; UPD2860 ; CORREC LST2680 ST150: MOV #2,CMDBUF ; SET UP TO GET OUTPUT SPEC., IF ANY LST2690 MOV #SOLKBK,CS2BLK+2; SET UP LINK BLOCK POINTER FOR CSI2 LST2700 MOV #SOFLBK,CS2BLK+4; SET UP FILE BLOCK POINTER LST2710 MOV #CS2BLK,-(SP) ; GET OUTPUT FILE LST2720 EMT 57 ; LST2730 SUB R5,(SP) ; SET STATUS ST ONLY 1 (NO MORE) IS OK. LST2740 LST2370 MOV #COLKBK,-(SP) ; WAIT FOR I/O TO FINISH LST2380 EMT 1 ; LST2390 ST100 =. ; LST2400 CLR R0 ; RESET LINE NUMBER COUNTER LST2410 MOV #LINENU,R1 ; GET ADDRESS OF LINE NUMBER (ASCII) LST2420 ; IN PRINT BUFFER. MOV #COLKBK,-(SP) ; INITALIZE KB FOR OUTPUT LST2250 EMT 6 ; LST2260 MOV #CMLKBK,-(SP) ; INITALIZE KB FOR INPUT LST2270 EMT 6 ; LST2280 MOV #COFLBK,-(SP) ; OPEN KB FOR OUTPUT LST2290 MOV #COLKBK,-(SP) ; LST2300 EMT 16 TION FILE BLOCK (INPUT) UPD2870 .WORD ERROR ; ERROR RETURN UPD2880 .BYTE 0 ; HOW OPENED UPD2890 .BYTE 0 ; ERROR CODE UPD2900 CRFLBK: .WORD 0 ; FILE NAME - WORD 1 UPD2910 .WORD 0 ; FILE NAME - WORD 2 UPD2920 .WORD 0 BEQ ST160 ; OK. GO INIT & OPEN IT. LST2750 MOV A71,ERRNUM ; SET ERROR NUMBER. TO MUCH STUFF. LST2760 ADD R5,(SP) ; RESET STATUS LST2770 JSR PC,ERR ; DO ERROR STUFF LST2780 JMP ST100 ; TRY AGAIN LST2790 ST160: TST SOLKBK+8. ; HERE TO SET SWITCH FLAGS (IF ANY). LST2800 BEQ ST170 LST2430 MOV #3,R3 ; SET UP CODE FOR BINARY TO DECIMAL CONV LST2440 MOV #1,R5 ; SET R5=1 FOR LATER USE LST2450 CLR DELETE ; RESET DELETE SWITCH FLAG LST2460 CLR CONCAT ; RESET CONCATINATE SWITCH FLAG LST2470 MOV #COMBFH,-(SP) ; PRINT '#' FOR CSI INPUT LST2480 MOV #COLKBK,-(SP) ; LST2490 ; LST2310 MOV #CMFLBK,-(SP) ; OPEN KB FOR INPUT LST2330 MOV #CMLKBK,-(SP) ; LST2320 EMT 16 ; LST2340 MOV #TITLBH,-(SP) ; WRITE PROCESSOR TITLE LST2350 MOV #COLKBK,-(SP) ; LST2360 EMT 2 ; ; FILE NAME EXTENSION UPD2930 .WORD 0 ; USER CODE [GN,UN] UPD2940 .WORD 0233 ; BYTE 1 SPARE; BYTE 0 PROTECTION CODE UPD2950 ; UPD2960 ; LINE PRINTER FILE BLOCK UPD2970 .IFG LPLNTH ; DO WE HAVE A LINE PRINTER UPD2980 .WORD ERROR ; ERROR RETU ; NO SWITCHS. GO ON. LST2810 CMP DESWCH,SOLKBK+10. ; SWITCHES. IS IT 'DE'? LST2820 BNE ST162 ; NO. ASSUME TO BE 'CC'. LST2830 INC DELETE ; DELETE SWITCH. SET FLAG. LST2840 BR ST164 ; GO ON. LOOK FOR A SECOND SWITCH. LST2850 ST162: INC CONCAT ; CONCATINATE SWITCH. SET FLAG. LST2860 ST164: TST SOLKBK+12. ; IS THERE A EMT 2 ; LST2500 MOV #COLKBK,-(SP) ; WAIT FOR I/O TO FINISH LST2510 EMT 1 ; LST2520 MOV #CSIBFH,-(SP) ; READ CSI STRING LST2530 MOV #CMLKBK,-(SP) ; LST2540 EMT 4 ; LST2550 MOV #C LST2370 MOV #COLKBK,-(SP) ; WAIT FOR I/O TO FINISH LST2380 EMT 1 ; LST2390 ST100 =. ; LST2400 CLR R0 ; RESET LINE NUMBER COUNTER LST2410 MOV #LINENU,R1 ; GET ADDRESS OF LINE NUMBER (ASCII) LST2420 ; IN PRINT BUFFER. RN UPD2990 .BYTE 0 ; HOW OPENED UPD3000 .BYTE 0 ; ERROR CODE UPD3010 LPFLBK: .WORD 0 ; FILE NAME - WORD 1 UPD3020 .WORD 0 ; FILE NAME - WORD 2 UPD3030 .WORD 0 ; FILE NAME EXTENSION UPD3040 .WORD 0 ; USER CODE [GN,UN] SECOND SWITCH? LST2870 BEQ ST170 ; NO. GO ON. LST2880 CMP DESWCH,SOLKBK+14. ; SWITCHS. IS IT DELETE? LST2890 BNE ST166 ; NO. ASSUME TO BE 'CC'. LST2900 INC DELETE ; DELETE SWITCH. SET FLAG. LST2910 BR ST170 ; GO ON. LST2920 ST166: INC CONCAT ; CONCATINATE SWITCH. SET FLAMLKBK,-(SP) ; WAIT FOR I/O TO FINISH LST2560 EMT 1 ; LST2570 TSTB CSIBFH+3 ; TEST STATUS OF CSI READ LST2580 BEQ ST120 ; BRANCH IF OK (=0). LST2590 EMT 60 ; EXIT ON NON-ZERO STATUS. (EOF) LST2600 ST120: MOV #CMDBUF,-(SP) ; USE CSI1 TO CONDENSE STRING LST2610 EMT 56 ; LST2430 MOV #3,R3 ; SET UP CODE FOR BINARY TO DECIMAL CONV LST2440 MOV #1,R5 ; SET R5=1 FOR LATER USE LST2450 CLR DELETE ; RESET DELETE SWITCH FLAG LST2460 CLR CONCAT ; RESET CONCATINATE SWITCH FLAG LST2470 MOV #COMBFH,-(SP) ; PRINT '#' FOR CSI INPUT LST2480 MOV #COLKBK,-(SP) ; LST UPD3050 .WORD 0233 ; BYTE 1 SPARE; BYTE 0 PROTECTION CODE UPD3060 .ENDC UPD3070 ; UPD3080 ; COMMAND INPUT FILE BLOCK UPD3090 .WORD ERROR ; ERROR RETURN UPD3100 .BYTE 0 ; HOW OPENED UPD3110G. LST2930 ST170: TST SOLKBK+6 ; ANY DEVICE SPECIFIED? LST2940 BEQ ST176 ; NO. GO SET UP FOR DEFAULT LP. LST2950 CMP RDF,SOLKBK+6 ; YES. IS IT THE DISK? LST2960 BNE ST178 ; NO. USER MUST KNOW WHAT HE'S DOING. LST2970 TST SOFLBK ; YES. IF NO FILE NAME MUST BE DEFAULT LST2980 BNE ST178 ; FROM CSI. STILL USE LP. IF NAME OK. LST2990 LST2620 TST (SP)+ ; TEST STATUS ON TOP OF STACK LST2630 BEQ ST150 ; JUMP IF ALL OK. LST2640 MOV -2(SP),R5 ; GET ADDRESS OF BAD BYTE LST2645 MOV A70,ERRNUM ; SET ERROR NUMBER LST2650 TST -(SP) ; MOVE STACK POINTER BACK TO ERROR STATU LST2660 JSR PC,ERR ; GO DO ERROR STUFF 2490 EMT 2 ; LST2500 MOV #COLKBK,-(SP) ; WAIT FOR I/O TO FINISH LST2510 EMT 1 ; LST2520 MOV #CSIBFH,-(SP) ; READ CSI STRING LST2530 MOV #CMLKBK,-(SP) ; LST2540 EMT 4 ; LST2550 MOV .BYTE 0 ; ERROR CODE UPD3120 CMFLBK: .WORD 0 ; FILE NAME - WORD 1 UPD3130 .WORD 0 ; FILE NAME - WORD 2 UPD3140 .WORD 0 ; FILE NAME EXTENSION UPD3150 .WORD 0 ; USER ID CODE [GN,UN] UPD3160 .WORD 0233 ; BYTE 1 SPARE; BYTE 0 PROTECTION CODE UPD3170 ; ST176: MOV RLP,SOLKBK+6 ; NO. SET DEFAULT OF LINE PRINTER. LST3000 ST178: MOV #SOLKBK,(SP) ; INITIALIZE SOURCE OUTPUT FILE LST3010 EMT 6 ; LST3020 TST DELETE ; IS DELETE SWITCH SET? LST3030 BEQ ST190 ; BRANCH IF NOT SET. GO OPENO. LST3040 MOV #SOFLBK,-(SP) ; USE LOOK TO SEE IF THE FILE EXISTS. LST3050 MOV LST2670 MOVB #'?,(R5)+ ; PUT A '?' IN PLACE OF THE BAD BYTE LST267A MOVB #CR,(R5)+ ; PUT IN A CR AFTER THE ? LST267B MOVB #LF,(R5)+ ; AND A LF TO TERMINATE THE LINE LST267C SUB #CSIBUF,R5 ; GET LENGTH OF OUTPUT MESSAGE LST267D MOV R5,CSIBFH+4 ; AND PLACE IT IN THE LINE HEADER LST267E MOV #CSIBFH,-(SP) ; WRITE THE CSI STRING WITH THE ? OUT #CMLKBK,-(SP) ; WAIT FOR I/O TO FINISH LST2560 EMT 1 ; LST2570 TSTB CSIBFH+3 ; TEST STATUS OF CSI READ LST2580 BEQ ST120 ; BRANCH IF OK (=0). LST2590 EMT 60 ; EXIT ON NON-ZERO STATUS. (EOF) LST2600 ST120: MOV #CMDBUF,-(SP) ; USE CSI1 TO CONDENSE STRING LST2610 EMT 56 UPD3180 ; COMMAND OUTPUT FILE BLOCK UPD3190 .WORD ERROR ; ERROR RETURN UPD3200 .BYTE 0 ; HOW OPENED UPD3210 .BYTE 0 ; ERROR CODE UPD3220 COFLBK: .WORD 0 ; FILE NAME - WORD 1 UPD3230 .WORD 0 ; #SOLKBK,-(SP) ; LST3060 EMT 14 ; LOOK LST3070 TST (SP)+ ; POP OFF FIRST (UNWANTED) ARGUMENT LST3080 BITB #200,(SP)+ ; BIT 7 =0 IF FILE DOES NOT EXIST LST3090 ; =1 IF THE FILE EXISTS LST3100 BEQ ST190 ; FILE DOESN'T EXIST. MAY NOW OPEN IT LST3110 BIT #040000,-(SP) ; LST267F MOV #COLKBK,-(SP) ; LST267G EMT 2 ; LST267H MOV #COLKBK,-(SP) ; WAIT FOR THE I/O TO COMPLET. LST267I EMT 1 ; LST267J JMP ST100 ; GO TRY AGAIN LST2680 ST150: MOV #SCMBFH,-(SP) ; PRINT 'STRING:' MESSAGE MOV #COLKBK,-(SP) ; LST2620 TST (SP)+ ; TEST STATUS ON TOP OF STACK LST2630 BEQ ST150 ; JUMP IF ALL OK. LST2640 MOV -2(SP),R5 ; GET ADDRESS OF BAD BYTE LST2645 MOV A70,ERRNUM ; SET ERROR NUMBER LST2650 TST -(SP) ; MOVE STACK POINTER BACK TO ERROR STATU LST2660 JSR PC,ERR ; GO DO ERROR STFILE NAME - WORD 2 UPD3240 .WORD 0 ; FILE NAME EXTENSION UPD3250 .WORD 0 ; USER ID CODE UPD3260 .WORD 0233 ; BYTE 1 SPARE; BYTE 0 PROTECTION CODE UPD3270 .PAGE UPD3280 START =. ; STARTING LOCATION OF PACKAGE UPD3290 MOV #LOW,SP ; INITIALIZE STACK PFILE EXISTS. IS PROTECT CODE SUCH LST3120 BEQ ST180 ; THAT IT CAN NOT BE DELETED? LST3130 MOV A55,ERRNUM ; ERROR. CAN NOT DELETE IT. PROTECT LST3140 JSR PC,ERR ; CODE IS ON STACK WITH DEVICE FUNCTION LST3150 JMP ST100 ; GO TRY FOR ANOTHER CSI STRING. LST3160 ST180: MOV #SOFLBK,(SP) ; FILE CAN BE DELETED. LET'S DO IT. LST3170 MOV #SOLKBK,-(SP) ; ; EMT 2 ; MOV #COLKBK,-(SP) ; WAIT FOR I/O TO FINISH EMT 1 ; MOV #SCBUFH,-(SP) ; READ SCAN STRING FROM COMMAND DEVICE MOV #CMLKBK,-(SP) ; EMT 4 ; MOV #CMLKBK,-(SP) ; WAIT FOR I/O TO FINISH EMT 1 ; TSTB SCBUFH+3 ; TEST STATUS OF READ BEQ STI53 ; BRANCH IF OK (=0). BITB #0100,SCBUUFF LST2670 MOVB #'?,(R5)+ ; PUT A '?' IN PLACE OF THE BAD BYTE LST267A MOVB #CR,(R5)+ ; PUT IN A CR AFTER THE ? LST267B MOVB #LF,(R5)+ ; AND A LF TO TERMINATE THE LINE LST267C SUB #CSIBUF,R5 ; GET LENGTH OF OUTPUT MESSAGE LST267D MOV R5,CSIBFH+4 ; AND PLACE IT IN THE LINE HEADER LST267E MOV #CSIBFH,-(SP) ; WRITE THE CSI STRING WITH THE ? OINTER UPD3300 MOV #COLKBK,-(SP) ; INITIALIZE KB FOR OUTPUT UPD3310 EMT 6 ; UPD3320 MOV #CMLKBK,-(SP) ; INITIALIZE KB FOR INPUT UPD3330 EMT 6 ; UPD3340 MOVB #2,COFLBK-2 ; OPEN KB FOR OUTOUT UPD3350 MOV #COFLBK,-(SP) ; LST3180 EMT 21 ; DELETE IT. NOW WE CAN OPEN IT. LST3190 ST190: MOV #SOFLBK,-(SP) ; OPEN IT FOR OUTPUT LST3200 MOV #SOLKBK,-(SP) ; LST3210 EMT 16 ; LST3220 .PAGE LST3230 ; BEGIN PROCESSING INPUT FILE(S). FH+3 ; EOF? BNE ST100 ; YES MOV A60,ERRNUM ; NO. PUT ERROR NUMBER IN MESSAGE MOV SRBUFH+2,-(SP) ; BUT STATUS ON STACK JSR PC,ERR ; GO DO ERROR STUFF BR ST100 ; START OVER STI53: MOV SCBUFH+4,SCNLNT ; COMPUTE SCAN STRING LENTH SUB #4,SCNLNT ; ALLOW FOR DELIMITORS AND LINE TERMIN. BGT STI57 ; ANYTHING LEFT? MOV A61,ERRNUM ; NO. ERROR 61OUT LST267F MOV #COLKBK,-(SP) ; LST267G EMT 2 ; LST267H MOV #COLKBK,-(SP) ; WAIT FOR THE I/O TO COMPLET. LST267I EMT 1 ; LST267J JMP ST100 ; GO TRY AGAIN LST2680 ST150: MOV #SCMBFH,-(SP) ; PRINT 'STRING:' MESSAGE MOV #COLKBK, UPD3360 MOV #COLKBK,-(SP) ; UPD3370 EMT 16 ; UPD3380 MOVB #4,CMFLBK-2 ; OPEN KB FOR INPUT UPD3390 MOV #CMFLBK,-(SP) ; UPD3400 MOV #CMLKBK,-(SP) ; UPD3410 EMT 16 ; UPD3420 LST3240 SA100 =. ; LST3250 CLR CMDBUF ; SET CSI2 FOR INPUT FILES LST3260 MOV #SILKBK,CS2BLK+2; SET UP LINK BLOCK POINTER LST3270 MOV #SIFLBK,CS2BLK+4; SET UP FILE BLOCK POINTER LST3280 MOV #CS2BLK,-(SP) ; GET NEXT INPUT FILE LST3290 EMT 57 ; LST3300 MOV SCNLNT,-(SP) ; PUT BYTE COUNT ON STACK. JSR PC,ERR ; DO ERROR STUFF BR ST100 ; START OVER. STI57: MOV #SCBUF+1,SCSTAR ; GET ADDRESS OF FIRST CHARACTER MOV #2,CMDBUF ; SET UP TO GET OUTPUT SPEC., IF ANY. MOV #SOLKBK,CS2BLK+2; SET UP LINK BLOCK POINTER FOR CSI2 LST2700 MOV #SOFLBK,CS2BLK+4; SET UP FILE BLOCK POINTER LST2710 MOV #CS2BLK,-(SP) ; GET OU-(SP) ; EMT 2 ; MOV #COLKBK,-(SP) ; WAIT FOR I/O TO FINISH EMT 1 ; MOV #SCBUFH,-(SP) ; READ SCAN STRING FROM COMMAND DEVICE MOV #CMLKBK,-(SP) ; EMT 4 ; MOV #CMLKBK,-(SP) ; WAIT FOR I/O TO FINISH EMT 1 ; TSTB SCBUFH+3 ; TEST STATUS OF READ BEQ STI53 ; BRANCH IF OK (=0). BITB #010 MOV #TITLBH,-(SP) ; WRITE UPDATE TITLE LINE UPD3430 MOV #COLKBK,-(SP) ; UPD3440 EMT 2 ; UPD3450 MOV #COLKBK,-(SP) ; WAIT FOR I/O TO FINISH UPD3460 EMT 1 ; UPD3470 ST100: CLR SOLKBK+010 ; CLEAR SWITCH SETINGS UPD3480 CLR SILKBK+0 MOV (SP)+,CS2RET ; GET STATUS LST3310 SUB R5,CS2RET ; ADJUST IT ST <0 IS ERROR. LST3320 BLE SA120 ; JUMP IF OK. LST3330 MOV A72,ERRNUM ; SET ERROR CODE LST3340 TST -(SP) ; RESET STACK POINTER LST3350 JSR PC,ERR ; GO DO ERROR STUFF LST3360 JMP ST100 TPUT FILE LST2720 EMT 57 ; LST2730 SUB R5,(SP) ; SET STATUS ST ONLY 1 (NO MORE) IS OK. LST2740 BEQ ST160 ; OK. GO INIT & OPEN IT. LST2750 MOV A71,ERRNUM ; SET ERROR NUMBER. TO MUCH STUFF. LST2760 ADD R5,(SP) ; RESET STATUS LST2770 JSR PC,ERR ; DO ERROR STUFF 0,SCBUFH+3 ; EOF? BNE ST100 ; YES MOV A60,ERRNUM ; NO. PUT ERROR NUMBER IN MESSAGE MOV SRBUFH+2,-(SP) ; BUT STATUS ON STACK JSR PC,ERR ; GO DO ERROR STUFF BR ST100 ; START OVER STI53: MOV SCBUFH+4,SCNLNT ; COMPUTE SCAN STRING LENTH SUB #4,SCNLNT ; ALLOW FOR DELIMITORS AND LINE TERMIN. BGT STI57 ; ANYTHING LEFT? MOV A61,ERRNUM ; NO. ER10 ; UPD3490 CLR CRLKBK+010 ; UPD3500 CLR LISTSW ; CLEAR LIST SWITCH INDICATOR UPD3510 CLR SIEOF ; CLEAR SOURCE INPUT EOF FLAG. UPD3520 CLR CREOF ; CLEAR CORRECTION INPUT EOF FLAG. UPD3530 CLR LINEI ; CLEAR CURRENT LINE NUMBER. UPD3540 CLR CRST ; CLEAR BE ; GO TRY AGAIN LST3370 SA120: MOV #SILKBK,-(SP) ; INITALIZE SOURCE INPUT FILE LST3380 EMT 6 ; LST3390 MOV #SIFLBK,-(SP) ; OPEN IT FOR INPUT LST3400 MOV #SILKBK,-(SP) ; LST3410 EMT 16 ; LST3420 TST CONCAT ; IS THE C LST2780 JMP ST100 ; TRY AGAIN LST2790 ST160: TST SOLKBK+8. ; HERE TO SET SWITCH FLAGS (IF ANY). LST2800 BEQ ST170 ; NO SWITCHS. GO ON. LST2810 CMP DESWCH,SOLKBK+10. ; SWITCHES. IS IT 'DE'? LST2820 BNE ST162 ; NO. ASSUME TO BE 'CC'. LST2830 INC DELETE ; DELETE SWITCH. SET FLAG. LSTROR 61 MOV SCNLNT,-(SP) ; PUT BYTE COUNT ON STACK. JSR PC,ERR ; DO ERROR STUFF BR ST100 ; START OVER. STI57: MOV #SCBUF+1,SCSTAR ; GET ADDRESS OF FIRST CHARACTER MOV #2,CMDBUF ; SET UP TO GET OUTPUT SPEC., IF ANY. MOV #SOLKBK,CS2BLK+2; SET UP LINK BLOCK POINTER FOR CSI2 LST2700 MOV #SOFLBK,CS2BLK+4; SET UP FILE BLOCK POINTER LST2710 MOV #CS2BLK,-(SP) ; GINING LINE NUMBER UPD3550 CLR CREND ; CLEAR ENDING LINE NUMBER UPD3560 MOVB #'-,SYMBOL ; REINITALIZE UPDAYE SYMBOL UPD3570 MOV RCR,CRLKBK+6 ; REINITIALIZE CR AS DEFAULT DEVICE UPD3580 MOV #COMBFH,-(SP) ; OUTPUT '#' FOR CSI INPUT UPD3590 MOV #COLKBK,-(SP) ; UPD3600 EMT 2 ; ONCATINATE SWITCH SET? LST3430 BNE SA150 ; IF SO, DON'T RESET LINE NUMBER COUNTER LST3440 CLR R0 ; CLEAR CURRENT LINE NUMBER COUNTER LST3450 SA150: MOV #SRBUFH,-(SP) ; READ A RECORD OF INPUT LST3460 MOV #SILKBK,-(SP) ; LST3470 EMT 4 ; LST3480 MOV #SILKBK,-(SP) ; WAIT UNTIL DONE 2840 BR ST164 ; GO ON. LOOK FOR A SECOND SWITCH. LST2850 ST162: INC CONCAT ; CONCATINATE SWITCH. SET FLAG. LST2860 ST164: TST SOLKBK+12. ; IS THERE A SECOND SWITCH? LST2870 BEQ ST170 ; NO. GO ON. LST2880 CMP DESWCH,SOLKBK+14. ; SWITCHS. IS IT DELETE? LST2890 BNE ST166 ; NO. ASSUME TO BE 'CC'. LST2900 INC GET OUTPUT FILE LST2720 EMT 57 ; LST2730 SUB R5,(SP) ; SET STATUS ST ONLY 1 (NO MORE) IS OK. LST2740 BEQ ST160 ; OK. GO INIT & OPEN IT. LST2750 MOV A71,ERRNUM ; SET ERROR NUMBER. TO MUCH STUFF. LST2760 ADD R5,(SP) ; RESET STATUS LST2770 JSR PC,ERR ; DO ERROR STUFF UPD3610 MOV #COLKBK,-(SP) ; WAIT UNTIL WRITE DONE UPD3620 EMT 1 ; UPD3630 MOV #CSIBFH,-(SP) ; READ CSI STRING UPD3640 MOV #CMLKBK,-(SP) ; UPD3650 EMT 4 ; UPD3660 MOV #CMLKBK,-(SP) ; WAIT FOR ALL OF IT UPD36 LST3490 EMT 1 ; LST3500 TSTB SRBUFH+3 ; TEST STATUS LST3510 BEQ SA170 ; JUMP IF OK. LST3520 BITB #0100,SRBUFH+3 ; IS NON-ZERO STATUS EOF? LST3530 BNE END100 ; YES LST3540 MOV A52,ERRNUM ; SET UP ERROR MESSAGE LST35 DELETE ; DELETE SWITCH. SET FLAG. LST2910 BR ST170 ; GO ON. LST2920 ST166: INC CONCAT ; CONCATINATE SWITCH. SET FLAG. LST2930 ST170: TST SOLKBK+6 ; ANY DEVICE SPECIFIED? LST2940 BEQ ST176 ; NO. GO SET UP FOR DEFAULT LP. LST2950 CMP RDF,SOLKBK+6 ; YES. IS IT THE DISK? LST2960 BNE ST178 LST2780 JMP ST100 ; TRY AGAIN LST2790 ST160: TST SOLKBK+8. ; HERE TO SET SWITCH FLAGS (IF ANY). LST2800 BEQ ST170 ; NO SWITCHS. GO ON. LST2810 CMP DESWCH,SOLKBK+10. ; SWITCHES. IS IT 'DE'? LST2820 BNE ST162 ; NO. ASSUME TO BE 'CC'. LST2830 INC DELETE ; DELETE SWITCH. SET FLAG. 70 EMT 1 ; UPD3680 TSTB CSIBFH+3 ; TEST STATUS OF CSI READ UPD3690 BEQ ST150 ; BRANCH IF A-OK. UPD3700 EMT 60 ; EXIT ON NON-ZERO STATUS. (EOF?) UPD3710 ST150: MOV #CMDBUF,-(SP) ; CONDENSE THE STRING UPD3720 EMT 56 ; UPD3730 TST 50 MOV SRBUFH+2,-(SP) ; PUT ERROR STATUS ON STACK LST3560 JSR PC,ERR ; GO DO ERROR STUFF. LST3570 JMP ERROR ; ERROR SHUT DOWN AND RESET. LST3580 SA170: INC R0 ; INCREMENT LINE COUNTER LST3590 MOV R0,-(SP) ; PUT BINARY NO. ON STACK LST3600 MOV R1,-(SP) ; PUT ADD. OF ASCII LINE NUMBER ON LST3610 MOV ; NO. USER MUST KNOW WHAT HE'S DOING. LST2970 TST SOFLBK ; YES. IF NO FILE NAME MUST BE DEFAULT LST2980 BNE ST178 ; FROM CSI. STILL USE LP. IF NAME OK. LST2990 ST176: MOV RLP,SOLKBK+6 ; NO. SET DEFAULT OF LINE PRINTER. LST3000 ST178: MOV #SOLKBK,(SP) ; INITIALIZE SOURCE OUTPUT FILE LST3010 EMT 6 ; LST3020 TST DELETE ; IS DELETE SWIT LST2840 BR ST164 ; GO ON. LOOK FOR A SECOND SWITCH. LST2850 ST162: INC CONCAT ; CONCATINATE SWITCH. SET FLAG. LST2860 ST164: TST SOLKBK+12. ; IS THERE A SECOND SWITCH? LST2870 BEQ ST170 ; NO. GO ON. LST2880 CMP DESWCH,SOLKBK+14. ; SWITCHS. IS IT DELETE? LST2890 BNE ST166 ; NO. ASSUME TO BE 'CC'. LST2900  (SP)+ ; TEST TOP OF STACK FOR STATUS UPD3740 BEQ ST200 ; =0 - OK. SKIP JUMP TO TRY AGAIN. UPD3750 MOV -2(SP),R5 ; GET ADDRESS OF BAD BYTE UPD3755 MOV A70,ERRNUM ; SET ERROR NUMBER UPD3760 TST -(SP) ; MOVE STACK POINTER DOWN TO STATUS CELL UPD3770 JSR PC,ERR ; GO DO ERROR STUFF UPD3780 MOVB #'?,(R5)+       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!            !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~; PUT A '?' IN PLACE OF THE BAD BYTE UPD378A MOVB #CR,(R5)+ ; PUT IN A CR AFTER THE ? UPD378B MOVB #LF,(R5)+ ; AND A LF TO TERMINATE THE LINE UPD378C SUB #CSIBUF,R5 ; GET LENGTH OF OUTPUT MESSAGE UPD378D MOV R5,CSIBFH+4 ; AND PLACE IT IN THE LINE HEADER UPD378E MOV #CSIBFH,-(SP) ; WRITE THE CSI STRING WITH THE ? OUT UPD378F MOV #COLKBK,-(SP) ; ; LST3680 MOV #LPLNTH,LPBUFH+4; RESET ACTUAL BYTE COUNT LST3690 TSTB LPBUFH+3 ; TEST STATUS LST3700 BEQ SA150 ; OK - GO DO NEXT. LST3710 MOV A51,ERRNUM ; SET UP ERROR NUMBER LST3720 MOV LPBUFH+2,-(SP) ; PUT STATUS ON STACK LST3730 JSR PC,ERR ; DO ERROR STUFF  LST3090 ; =1 IF THE FILE EXISTS LST3100 BEQ ST190 ; FILE DOESN'T EXIST. MAY NOW OPEN IT LST3110 BIT #040000,-(SP) ; FILE EXISTS. IS PROTECT CODE SUCH LST3120 BEQ ST180 ; THAT IT CAN NOT BE DELETED? LST3130 MOV A55,ERRNUM ; ERROR. CAN NOT DELETE IT. PROTECT LST3140 JSR PC,ERR ; CODE IS ON STACK WITH DEVICE FUNCTION LST3150  ; NO. USER MUST KNOW WHAT HE'S DOING. LST2970 TST SOFLBK ; YES. IF NO FILE NAME MUST BE DEFAULT LST2980 BNE ST178 ; FROM CSI. STILL USE LP. IF NAME OK. LST2990 ST176: MOV RLP,SOLKBK+6 ; NO. SET DEFAULT OF LINE PRINTER. LST3000 ST178: MOV #SOLKBK,(SP) ; INITIALIZE SOURCE OUTPUT FILE LST3010 EMT 6 ; LST3020 TST DELETE ; IS DELET  UPD378G EMT 2 ; UPD378H MOV #COLKBK,-(SP) ; WAIT FOR THE I/O TO COMPLET. UPD378I EMT 1 ; UPD378J JMP ST100 ; GO TRY AGAIN UPD3790 ST200: MOV #1,R5 ; SET +1 IN R5 FOR LATER USE UPD3800 MOV #2,R4 ; SET +2 IN R4 FOR LATER USE  LST3740 JMP ERROR ; ERROR SHUT DOWN AND RESET. LST3750 .PAGE LST3760 ; HERE FOR SOURCE INPUT EOF. LST3770 END100 =. ; LST3780 MOV #SILKBK,-(SP) ; CLOSE SOURCE INPUT FILE. LST3790 EMT 17 ;  JMP ST100 ; GO TRY FOR ANOTHER CSI STRING. LST3160 ST180: MOV #SOFLBK,(SP) ; FILE CAN BE DELETED. LET'S DO IT. LST3170 MOV #SOLKBK,-(SP) ; LST3180 EMT 21 ; DELETE IT. NOW WE CAN OPEN IT. LST3190 ST190: MOV #SOFLBK,-(SP) ; OPEN IT FOR OUTPUT LST3200 MOV #SOLKBK,-(SP) ; LST3210 EMT 16 E SWITCH SET? LST3030 BEQ ST190 ; BRANCH IF NOT SET. GO OPENO. LST3040 MOV #SOFLBK,-(SP) ; USE LOOK TO SEE IF THE FILE EXISTS. LST3050 MOV #SOLKBK,-(SP) ; LST3060 EMT 14 ; LOOK LST3070 TST (SP)+ ; POP OFF FIRST (UNWANTED) ARGUMENT LST3080 BITB #200,(SP)+ ; BIT 7 =0 IF FILE DOES NOT  UPD3810 MOV #3,R3 ; SET +3 IN R3 FOR LATER USE UPD3820 MOV R4,CMDBUF ; SET REQUEST FOR OUTPUT IN CSI2 UPD3830 MOVB R3,SOLKBK+4 ; SET NUMBER OF WORDS TO FOLLOW UPD3840 MOV #SOLKBK,CS2BLK+2; SET UP LINK BLOCK FOR CSI2 UPD3850 MOV #SOFLBK,CS2BLK+4; SET UP FILE POINTER FOR CSI2 UPD3860 MOV #CS2BLK,-(SP) ; GET OUTPUT FILE UPD3870  LST3800 MOV #SILKBK,-(SP) ; WAIT FOR CLOSE LST3810 EMT 1 ; LST3820 MOV #SILKBK,-(SP) ; RELEASE SOURCE INPUT FILE LST3830 EMT 7 ; LST3840 TST CS2RET ; MORE INPUT FILES TO COME? LST3850 BEQ END200 ; NO. LST3860  ; LST3220 .PAGE LST3230 ; BEGIN PROCESSING INPUT FILE(S). LST3240 SA100 =. ; LST3250 CLR CMDBUF ; SET CSI2 FOR INPUT FILES LST3260 MOV #SILKBK,CS2BLK+2; SET UP LINK BLOCK POINTER LST3270 MOV #SIFLBK,CS2BLK+4; SET EXIST LST3090 ; =1 IF THE FILE EXISTS LST3100 BEQ ST190 ; FILE DOESN'T EXIST. MAY NOW OPEN IT LST3110 BIT #040000,-(SP) ; FILE EXISTS. IS PROTECT CODE SUCH LST3120 BEQ ST180 ; THAT IT CAN NOT BE DELETED? LST3130 MOV A55,ERRNUM ; ERROR. CAN NOT DELETE IT. PROTECT LST3140 JSR PC,ERR ; CODE IS ON STACK WITH DEVICE FUNCTION LST31 EMT 57 ; UPD3880 MOV (SP)+,CS2RET ; GET TOP OF STACK TO CHECK UPD3890 SUB R5,CS2RET ; STATUS: -1=TO MANY FILES UPD3900 BEQ ST210 ; 0=OK, +1,+2= TO MANY SWITCHS UPD3910 MOV A71,ERRNUM ; SET ERROR NUMBER UPD3920 SUB R4,SP ; MOVE STACK POINTER TO STATUS CELL UPD3930 JSR PC,ERR MOV #FFBFH,-(SP) ; YES. GIVE FORM FEED. LST3870 MOV #SOLKBK,-(SP) ; LST3880 EMT 2 ; LST3890 MOV #SOLKBK,-(SP) ; WAIT UNTIL DONE LST3900 EMT 1 ; LST3910 JMP SA100 ; GO GET NEXT INPUT FILE LST3920 END200: MOV #SOLKBUP FILE BLOCK POINTER LST3280 MOV #CS2BLK,-(SP) ; GET NEXT INPUT FILE LST3290 EMT 57 ; LST3300 MOV (SP)+,CS2RET ; GET STATUS LST3310 SUB R5,CS2RET ; ADJUST IT ST <0 IS ERROR. LST3320 BLE SA120 ; JUMP IF OK. LST3330 MOV A72,ERRNUM ; SET ERROR CODE 50 JMP ST100 ; GO TRY FOR ANOTHER CSI STRING. LST3160 ST180: MOV #SOFLBK,(SP) ; FILE CAN BE DELETED. LET'S DO IT. LST3170 MOV #SOLKBK,-(SP) ; LST3180 EMT 21 ; DELETE IT. NOW WE CAN OPEN IT. LST3190 ST190: MOV #SOFLBK,-(SP) ; OPEN IT FOR OUTPUT LST3200 MOV #SOLKBK,-(SP) ; LST3210 EMT  ; GO DO ERROR STUFF UPD3940 JMP ST100 ; ERROR- GO TRY AGAIN UPD3950 ST210: TST SOLKBK+6 ; DATASET SPECIFIED(>0) OR NOT (=0)? UPD3960 BNE ST215 ; BRANCH IF DATASET SPEC. UPD3970 DEC OUTPUT ; SI=SO BY DEFAULT. SET FLAG=-1. UPD3980 BR ST220 ; GO ON. UPD3990 ST215: TST SOFLBK ; IS A FK,-(SP) ; CLOSE SOURCE OUTPUT FILE LST3930 EMT 17 ; LST3940 MOV #SOLKBK,-(SP) ; WAIT FOR CLOSE LST3950 EMT 1 ; LST3960 MOV #SOLKBK,-(SP) ; RELEASE DATASET LST3970 EMT 7 ; LST3980 MOV #ENDLBH,-(SP) ; PRINT  LST3340 TST -(SP) ; RESET STACK POINTER LST3350 JSR PC,ERR ; GO DO ERROR STUFF LST3360 JMP ST100 ; GO TRY AGAIN LST3370 SA120: MOV #SILKBK,-(SP) ; INITALIZE SOURCE INPUT FILE LST3380 EMT 6 ; LST3390 MOV #SIFLBK,-(SP) ; OPEN IT FOR INPUT L 16 ; LST3220 .PAGE LST3230 ; BEGIN PROCESSING INPUT FILE(S). LST3240 SA100 =. ; LST3250 CLR CMDBUF ; SET CSI2 FOR INPUT FILES LST3260 MOV #SILKBK,CS2BLK+2; SET UP LINK BLOCK POINTER LST3270 MOV #SIFLBK,CS2BLK+4ILE SPECIFIED? UPD4000 BNE ST220 ; YES. BRANCH. UPD4010 MOV R5,OUTPUT ; SET FLAG FOR NO FILE WITH DEVICE GIVEN UPD4020 ST220: CLR CMDBUF ; SET CSI2 FOR INPUT FILES. UPD4030 MOV R3,SILKBK+4 ; SET NUMBER WORDS TO FOLLOW UPD4040 MOV #SILKBK,CS2BLK+2; SET LINK BLOCK POINTER FOR CSI2 UPD4050 MOV #SIFLBK,CS2BLK+4; SET FILE BLOCK POINTER FENDING MESSAGE LST3990 MOV #COLKBK,-(SP) ; LST4000 EMT 2 ; LST4010 MOV #COLKBK,-(SP) ; WAIT UNTIL DONE LST4020 EMT 1 ; LST4030 JMP ST100 ; REQUEST NEXT CSI STRING LST4040 .PAGE ST3400 MOV #SILKBK,-(SP) ; LST3410 EMT 16 ; LST3420 TST CONCAT ; IS THE CONCATINATE SWITCH SET? LST3430 BNE SA150 ; IF SO, DON'T RESET LINE NUMBER COUNTER LST3440 CLR R0 ; CLEAR CURRENT LINE NUMBER COUNTER LST3450 SA150: MOV #SRBUFH,-(SP) ; READ A RECORD OF INPUT LST3460 MO; SET UP FILE BLOCK POINTER LST3280 MOV #CS2BLK,-(SP) ; GET NEXT INPUT FILE LST3290 EMT 57 ; LST3300 MOV (SP)+,CS2RET ; GET STATUS LST3310 SUB R5,CS2RET ; ADJUST IT ST <0 IS ERROR. LST3320 BLE SA120 ; JUMP IF OK. LST3330 MOV A72,ERRNUM ; SET ERROR CODE OR CSI2 UPD4060 MOV #CS2BLK,-(SP) ; GET FIRST (SOURCE) INPUT FILE UPD4070 EMT 57 ; UPD4080 MOV (SP)+,CS2RET ; GET STATUS UPD4090 SUB R5,CS2RET ; SET UP STATUS. 0 (-1) OR 1 (0) OK. UPD4100 BMI ST300 ; ALL OK. ANOTHER SPEC TO GO. UPD4110 BEQ ST400 ; STILL OK. DEFAULT CORRECTION FILE. UPD LST4050 ; HERE FOR ERROR SHUT DOWN. LST4060 ERROR =. ; LST4070 CLR CS2RET ; FAKE NO MORE INPUT LST4080 BR END100 ; GO CLOSE UP. LST4090 .PAGE LST4100 ; THIS SUBROUTINE IS USED TO PRINT THE UPDATE SYSTEM ERROR MESSAGES. LSTV #SILKBK,-(SP) ; LST3470 EMT 4 ; LST3480 MOV #SILKBK,-(SP) ; WAIT UNTIL DONE LST3490 EMT 1 ; LST3500 TSTB SRBUFH+3 ; TEST STATUS LST3510 BEQ SA170 ; JUMP IF OK. LST3520 BITB #0100,SRBUFH  LST3340 TST -(SP) ; RESET STACK POINTER LST3350 JSR PC,ERR ; GO DO ERROR STUFF LST3360 JMP ST100 ; GO TRY AGAIN LST3370 SA120: MOV #SILKBK,-(SP) ; INITALIZE SOURCE INPUT FILE LST3380 EMT 6 ; LST3390 MOV #SIFLBK,-(SP) ; OPEN IT FOR INPUT !4120 MOV A72,ERRNUM ; SET ERROR NUMBER UPD4130 SUB R4,SP ; MOVE STACK POINTER TO STATUS CELL UPD4140 JSR PC,ERR ; GO DO ERROR STUFF UPD4150 JMP ST100 ; GO TRY AGAIN UPD4160 ST300: TST SILKBK+6 ; ANY DATA SET? UPD4170 BNE ST310 ; YES. OK. UPD4180 MOV "4110 ; THE CALLING CODE MUST PLACE THE PROPER ASCII CODE NUMBERS LST4120 ; IN THE SKELETON. THESE NUMBERS ARE THE LAST TWO OF THE FOUR CHARACTER LST4130 ; ERROR NUMBER. IE ERROR 55 WOULD PLACE THE ASCII CHARACTERS '55' LST4140 ; IN THE SKELETON AT ADDRESS ERRNUM. THE RESULTING MESSAGE WOULD BE LST4150 ; 'S255 '. LST4160 ; THE CALLING PROGRAM MAY ALSO PLACE A SINGLE BINARY LST4170 ; VALUE ON T#+3 ; IS NON-ZERO STATUS EOF? LST3530 BNE END100 ; YES LST3540 MOV A52,ERRNUM ; SET UP ERROR MESSAGE LST3550 MOV SRBUFH+2,-(SP) ; PUT ERROR STATUS ON STACK LST3560 JSR PC,ERR ; GO DO ERROR STUFF. LST3570 JMP ERROR ; ERROR SHUT DOWN AND RESET. LST3580 SA170: INC R0 ; INCREMENT LI$ LST3400 MOV #SILKBK,-(SP) ; LST3410 EMT 16 ; LST3420 MOV #CSIBFH,-(SP) ; PRINT CSI LINE BEFORE EACH FILE IS MOV #SOLKBK,-(SP) ; SCANED. EMT 2 ; MOV #SOLKBK,-(SP) ; EMT 1 ; WAIT HERE UNTIL DONE. TST CONCAT ; IS THE CONCATINATE SWITCH SET? LST3430 % A73,ERRNUM ; SET ERROR NUMBER UPD4190 CLR -(SP) ; PUT ZERO ON TOP OF STACK FOR ERROR UPD4200 JSR PC,ERR ; GO DO ERROR STUFF UPD4210 JMP ST100 ; NO. TRY AGAIN UPD4220 ST310: CLR CMDBUF ; CLEAR TYPE. SET FOR INPUT FILES. UPD4230 MOV R3,CRLKBK+4 ; SET NUMBER OF WORDS TO FOLLOW UPD4240 MOV #CRLKBK,CS2BLK&HE TOP OF THE STACK. THIS VALUE WILL BE REMOVED AND LST4180 ; PRINTED AS A FIVE CHARACTER ASCII CHARACTER STRING AFTER BEING LST4190 ; CONVERTED BY THE PROGRAM. LST4200 ; THE SUBROUTINE USES THE REGISTER R2. IT IS NOT RESTORED. LST4210 ; LST4220 ERR =. ; ENTRY POINT LST4230 MOV (SP)+,R2 'NE COUNTER LST3590 MOV #LPBUF,R2 ; GET ADDRESS OF INPUT RECORD INTO R2 MOV SCSTART,R4 ; GET FIRST SCAN CHAR. ADD. INTO R4 SA175: CMPB (R2),(R4) ; DOES FIRST CHARACTER MATCH? BNE SA200 ; NO. THEN IS IT CR? (LINE END) MOV R4,-(SP) ; YES. COMPARE REST OF LINE(SAVE R4) MOV R2,-(SP) ; SAVE R2 ON STACK MOV SCNLNT,-(SP) ; PUT BYTE COUNT ON STACK. SA180: CMPB (R( BNE SA150 ; IF SO, DON'T RESET LINE NUMBER COUNTER LST3440 CLR R0 ; CLEAR CURRENT LINE NUMBER COUNTER LST3450 SA150: MOV #SRBUFH,-(SP) ; READ A RECORD OF INPUT LST3460 MOV #SILKBK,-(SP) ; LST3470 EMT 4 ; LST3480 MOV #SILKBK,-(SP) ; WAIT UNTIL DONE LST3490 EMT 1 )+2; SET LINK BLOCK ADD IN CS2 BLOCK UPD4250 MOV #CRFLBK,CS2BLK+4; SET FILE BLOCK ADD FOR CS2 UPD4260 MOV #CS2BLK,-(SP) ; GET SECOND (CORRECTION) FILE UPD4270 EMT 57 ; UPD4280 MOV (SP)+,CS2RET ; GET STATUS FROM STACK UPD4290 SUB R5,CS2RET ; ONLY STATUS=1 IS OK (NO MORE) UPD4300 BEQ ST400 ; TEST IF OK * ; SAVE RETURN ADDRESS LST4240 MOV #ERRADD,-(SP) ; SET CHARACTER STRING ADDRESS IN STACK LST4250 MOV #5,-(SP) ; SET CONVERSION CODE IN STACK LST4260 EMT 42 ; USE BIN20 FOR CONVERSION LST4270 MOV #ERRLBH,-(SP) ; PUT ERROR MESSAGE ADDRESS IN STACK LST4280 MOV #COLKBK,-(SP) ; PUT OUTPUT LINK BLOCK ADDRESS IN LST4290 EMT 2 ; GO WRITE IT OU+2)+,(R4)+ ; BEGING CHECKING STRING. BNE SA190 ; DOES'T MATCH DEC (SP) ; MATCHES. DECREMENT BYTE COUNTER BGT SA180 ; MORE TO TRY. CMP (SP)+,(SP)+ ; RESET THE STACK POINTER MOV (SP)+,R4 ; RESTORE R4 BR SA210 ; STRING MATCHES. PRINT LINE SA190: TST (SP)+ ; RESTORE TO BEFORE DETAILED SCAN. MOV (SP)+,R2 ; MOV (SP)+,R4 , ; LST3500 TSTB SRBUFH+3 ; TEST STATUS LST3510 BEQ SA170 ; JUMP IF OK. LST3520 BITB #0100,SRBUFH+3 ; IS NON-ZERO STATUS EOF? LST3530 BNE END100 ; YES LST3540 MOV A52,ERRNUM ; SET UP ERROR MESSAGE LST3550 MOV SRBUFH+2,-(SP) ; PUT ERRO- UPD4310 MOV A74,ERRNUM ; SET UP ERROR NUMBER UPD4320 SUB R4,SP ; MOVE STACK POINTER TO STATUS CELL UPD4330 JSR PC,ERR ; GO DO ERROR STUFF UPD4340 JMP ST100 ; GO TRY AGAIN UPD4350 ST400: TST SILKBK+010 ; ARE WE IN INSERT MODE? UPD4360 BEQ ST405 ; NO. .T LST4300 MOV #COLKBK,-(SP) ; WAIT TILL DONE LST4310 EMT 1 ; LST4320 MOV R2,-(SP) ; RESTORE RETURN ADDRESS LST4330 RTS PC ; RETURN LST4340 .PAGE LST4350 ; CONSTANTS AND VARIABLES / ; RESTORE R4 SA200: CMPB #CR,(R2)+ ; CR? (END OF LINE) BNE SA175 ; NO. GO TRY NEXT CHARACTER BR SA150 ; YES. NOT FOUND. DON'T PRINT LINE. SA210: MOV R0,-(SP) ; PUT BINARY LINE NUMBER ON STACK. MOV R1,-(SP) ; PUT ADD. OF ASCII LINE NUMBER ON LST3610 MOV R3,-(SP) ; STACK ALONG WITH CODE FOR BINARY LST3620 EMT 42 ; TO DECIMAL (ASCII) CONVERSION. L0R STATUS ON STACK LST3560 JSR PC,ERR ; GO DO ERROR STUFF. LST3570 JMP ERROR ; ERROR SHUT DOWN AND RESET. LST3580 SA170: INC R0 ; INCREMENT LINE COUNTER LST3590 MOV #LPBUF,R2 ; GET ADDRESS OF INPUT RECORD INTO R2 MOV SCSTART,R4 ; GET FIRST SCAN CHAR. ADD. INTO R4 SA175: CMPB (R2),(R4) ; DOES FIRST CHARACTER MATCH? BNE SA1 UPD4370 CLR CRLKBK+6 ; YES. NO CORRECTION FILE THEN. UPD4380 BR ST420 ; DONE. UPD4390 ST405: CMP RDF,CRLKBK+6 ; IS THE DEVICE DISK? UPD4400 BEQ ST407 ; YES. MAYBE DEFAULT WITH WRONG DEVICE UPD4410 CMP RDT,CRLKBK+6 ; IS IT DECTAPE? UPD4420 BNE ST410 ; NO. MUST BE KB OR CR. UPD4430 ST2 LST4360 ; LST4370 ; CONSTANTS LST4380 DESWCH: .ASCII /DE/ ; FORM OF DELETE SWITCH. LST4390 RDF: .RAD50 /DF/ ; LST4400 RLP: .RAD50 /LP/ ; LST4410 A51: .ASCII /51/ ; BAD SOURCE OUTPUT WRITE LST4420 A53ST3630 MOV #LPBUFH,-(SP) ; WRITE OUTPUT LINE ONTO SOURCE OUTPUT LST3640 MOV #SOLKBK,-(SP) ; DEVICE LST3650 EMT 2 ; LST3660 MOV #SOLKBK,-(SP) ; WAIT UNTIL DONE LST3670 EMT 1 ; LST3680 MOV #LPLNTH,LPBUFH+4; RESET ACTUAL BYTE COUNT LST3690 TS4200 ; NO. THEN IS IT CR? (LINE END) MOV R4,-(SP) ; YES. COMPARE REST OF LINE(SAVE R4) MOV R2,-(SP) ; SAVE R2 ON STACK MOV SCNLNT,-(SP) ; PUT BYTE COUNT ON STACK. SA180: CMPB (R2)+,(R4)+ ; BEGING CHECKING STRING. BNE SA190 ; DOES'T MATCH DEC (SP) ; MATCHES. DECREMENT BYTE COUNTER BGT SA180 ; MORE TO TRY. CMP (SP)+,(SP)+ ; RESET THE STACK POIN5407: TST CRFLBK ; ANY FILE GIVEN? IF SO, ALL IS A-OK. UPD4440 BNE ST410 ; GIVEN FILE NAME UPD4450 MOV RCR,CRLKBK+6 ; FORCE DEFAULT CARD READER UPD4460 BR ST420 ; DONE UPD4470 ST410: CMP CRLKBK+6,RKB ; IS CORRECTION FILE FROM KB? UPD4480 BNE ST420 ; NO. UPD4490 TST #LPL62: .ASCII /52/ ; BAD SOURCE INPUT READ LST4430 A55: .ASCII /55/ ; CAN NOT DELETE S/ FILE. (PROTECT) LST4440 A70: .ASCII /70/ ; BAD CSI1 SYNTAX LST4450 A71: .ASCII /71/ ; BAD CSI2 (OUTPUT) LST4460 A72: .ASCII /72/ ; BAD CSI2 (INPUT) LST4470 ; VARIABLES LST4480 CONCAT: .WORD 0 7TB LPBUFH+3 ; TEST STATUS LST3700 BEQ SA150 ; OK - GO DO NEXT. LST3710 MOV A51,ERRNUM ; SET UP ERROR NUMBER LST3720 MOV LPBUFH+2,-(SP) ; PUT STATUS ON STACK LST3730 JSR PC,ERR ; DO ERROR STUFF LST3740 JMP ERROR ; ERROR SHUT DOWN AND RESET. LST3750 .PAGE 8TER MOV (SP)+,R4 ; RESTORE R4 BR SA210 ; STRING MATCHES. PRINT LINE SA190: TST (SP)+ ; RESTORE TO BEFORE DETAILED SCAN. MOV (SP)+,R2 ; MOV (SP)+,R4 ; RESTORE R4 SA200: CMPB #CR,(R2)+ ; CR? (END OF LINE) BNE SA175 ; NO. GO TRY NEXT CHARACTER BR SA150 ; YES. NOT FOUND. DON'T PRINT LINE. SA210: MOV R0,-(SP) ; PUT BINARY LINE NUMBER9NTH ; NO. IS THERE A LINE PRINTER? UPD4500 BNE ST420 ; YES. ALL IS OK. UPD4510 CLR CRLKBK+010 ; NO. PREVENT LISTING OF CORRECTION FILE UPD4520 ST420 =. ; LET'S CARRY ON. UPD4530 .PAGE UPD4540 ; ALL CSI DONE. LET'S VERIFY ALL FILE NAMES A-OK. UPD4550 CMP SILKBK+6,CRLKBK+6; SAM: ; CONCATINATE SWITCH FLAG. LST4490 CS2RET: .WORD 0 ; RETURNED VALUE FROM CSI2 OF SOURCE IN. LST4500 DELETE: .WORD 0 ; DELETE SWITCH FLAG. LST4510 .END START ; ALL DONE LST4520 ; LST3760 ; HERE FOR SOURCE INPUT EOF. LST3770 END100 =. ; LST3780 MOV #SILKBK,-(SP) ; CLOSE SOURCE INPUT FILE. LST3790 EMT 17 ; LST3800 MOV #SILKBK,-(SP) ; WAIT FOR CLOSE LST3810 EMT 1 ; < ON STACK. MOV R1,-(SP) ; PUT ADD. OF ASCII LINE NUMBER ON LST3610 MOV R3,-(SP) ; STACK ALONG WITH CODE FOR BINARY LST3620 EMT 42 ; TO DECIMAL (ASCII) CONVERSION. LST3630 MOV #LPBUFH,-(SP) ; WRITE OUTPUT LINE ONTO SOURCE OUTPUT LST3640 MOV #SOLKBK,-(SP) ; DEVICE LST3650 EMT 2 ; LST3660 =E DEVICE? CORRECTION VS. SOURCE IN UPD4560 BNE SA200 ; NO. ALL OK. UPD4570 CMPB SILKBK+5,CRLKBK+5 ; YES. IS THE UNIT NUMBER THE SAME? UPD4580 BNE SA200 ; NO. ALL IS A-OK. UPD4590 MOV #SIFLBK,R0 ; YES. GO CHECK REST OF INFO. UPD4600 MOV #CRFLBK,R1 ; R0 =ADD(ONE FILE BLOCK). UPD4610 JSR PC,FILECK ; R1 =ADD(OTHER FILE BLO? LST3820 MOV #SILKBK,-(SP) ; RELEASE SOURCE INPUT FILE LST3830 EMT 7 ; LST3840 TST CS2RET ; MORE INPUT FILES TO COME? LST3850 BEQ END200 ; NO. LST3860 MOV #FFBFH,-(SP) ; YES. GIVE FORM FEED. LST3870 MOV #SOLKBK,-(SP) ; @ MOV #SOLKBK,-(SP) ; WAIT UNTIL DONE LST3670 EMT 1 ; LST3680 MOV #LPLNTH,LPBUFH+4; RESET ACTUAL BYTE COUNT LST3690 TSTB LPBUFH+3 ; TEST STATUS LST3700 BEQ SA150 ; OK - GO DO NEXT. LST3710 MOV A51,ERRNUM ; SET UP ERROR NUMBER LST3720 MOV LPBUFH+2ACK). UPD4620 BNE SA200 ; NOT SAME ON RETURN. UPD4630 MOV A50,ERRNUM ; SAME. BAD. SET UP ERROR MESSAGE. UPD4640 MOV R5,-(SP) ; PUT A 1 ON STACK FOR ERROR MESSAGE UPD4650 JSR PC,ERR ; GO DO ERROR STUFF. UPD4660 JMP ST100 ; GO TRY AGAIN. UPD4670 SA200: CMP SOLKBK+6,SILKBK+6; ARE THE SOURCE INPUT = SOURCE UBB|9wW*/." +%$#(!'&0mSCAN V001B ,   END S200 H  #  ~چ00000*  R7 STRING: R,^NENE*y,{LM:,, !pC LST3880 EMT 2 ; LST3890 MOV #SOLKBK,-(SP) ; WAIT UNTIL DONE LST3900 EMT 1 ; LST3910 JMP SA100 ; GO GET NEXT INPUT FILE LST3920 END200: MOV #SOLKBK,-(SP) ; CLOSE SOURCE OUTPUT FILE LST3930 EMT 17 ; LST3940 D,-(SP) ; PUT STATUS ON STACK LST3730 JSR PC,ERR ; DO ERROR STUFF LST3740 JMP ERROR ; ERROR SHUT DOWN AND RESET. LST3750 .PAGE LST3760 ; HERE FOR SOURCE INPUT EOF. LST3770 END100 =. ; LST3780 MOV #SILKBK,-(SP) ; CLOSE SOEPD4680 BNE SA220 ; OUTPUT FILE. (EXPLICITLY) UPD4690 CMPB SOLKBK+5,SILKBK+5 ; UPD4700 BNE SA220 ; UPD4710 MOV #SOFLBK,R0 ; UPD4720 MOV #SIFLBK,R1 ; UPD4730 JSR PC,FILECK ; UPD4740 BNFfpB,fpp  7 *,7 ppffI,B0.  Օ?Օ%,h Օ wppw5,ppff @y,` < *^XDF,L Bhd,^/NNa w p-j,&ݷ   \ -V   > ,G MOV #SOLKBK,-(SP) ; WAIT FOR CLOSE LST3950 EMT 1 ; LST3960 MOV #SOLKBK,-(SP) ; RELEASE DATASET LST3970 EMT 7 ; LST3980 MOV #ENDLBH,-(SP) ; PRINT ENDING MESSAGE LST3990 MOV #COLKBK,-(SP) ; LST4000 EMT 2 HURCE INPUT FILE. LST3790 EMT 17 ; LST3800 MOV #SILKBK,-(SP) ; WAIT FOR CLOSE LST3810 EMT 1 ; LST3820 MOV #SILKBK,-(SP) ; RELEASE SOURCE INPUT FILE LST3830 EMT 7 ; LST3840 TST CS2RET ; MORE INPUT FILES TO COME? IE SA220 ; UPD4750 MOV R5,OUTPUT ; THE SAME. SET FLAG. (OUTPUT=1) UPD4760 SA220: TST OUTPUT ; ARE SI = SO FILE AND DEVICE UPD4770 BEQ SA240 ; NOT SAME. UPD4780 BPL SA230 ; NOT DEFAULT OUTPUT FILE NAME. UPD4790 MOV SILKBK+6,SOLKBK+6; DEFAULT NAME. SET UP LINK & FILE BLK UPD4800 MOVB SILKBK+5,SOLJL-6 h( ,r ֵ5@R `wvt,7 Lzۮ۪^/ ,ݷfwbX w2z,z * z, z @= w ,0ހ & % 9,Vނҥ &f"4,|ކRv \wRzz,z z w K ; LST4010 MOV #COLKBK,-(SP) ; WAIT UNTIL DONE LST4020 EMT 1 ; LST4030 JMP ST100 ; REQUEST NEXT CSI STRING LST4040 .PAGE LST4050 ; HERE FOR ERROR SHUT DOWN. LST4060 ERROR =. ; L LST3850 BEQ END200 ; NO. LST3860 MOV #FFBFH,-(SP) ; YES. GIVE FORM FEED. LST3870 MOV #SOLKBK,-(SP) ; LST3880 EMT 2 ; LST3890 MOV #SOLKBK,-(SP) ; WAIT UNTIL DONE LST3900 EMT 1 ; LST39MKBK+5 ; SET UNIT NUMBER. UPD4810 SA230: CLR OUTPUT ; CLEAR FLAG UPD4820 MOV SIFLBK,SOFLBK ; UPD4830 MOV SIFLBK+2,SOFLBK+2; UPD4840 MOV SIFLBK+4,SOFLBK+4 ; GET SI FILE EXTENSION FOR SO. UPD4850 CMP SILKBK+6,SOLKBK+6 ; ARE THE FILES ON THE SAME DEVICE? UPD4860 BNE SA240 ; NO. DON'T N,ppw 7 :~,"ppDE#"߀M5152556061707172RO LST4070 CLR CS2RET ; FAKE NO MORE INPUT LST4080 BR END100 ; GO CLOSE UP. LST4090 .PAGE LST4100 ; THIS SUBROUTINE IS USED TO PRINT THE UPDATE SYSTEM ERROR MESSAGES. LST4110 ; THE CALLING CODE MUST PLACE THE PROPER ASCII CODE NUMBERS LST4120 ; IN THE SKELETON. THESE NUMBERS ARE THE LAST TWO OF P10 JMP SA100 ; GO GET NEXT INPUT FILE LST3920 END200: MOV #SOLKBK,-(SP) ; CLOSE SOURCE OUTPUT FILE LST3930 EMT 17 ; LST3940 MOV #SOLKBK,-(SP) ; WAIT FOR CLOSE LST3950 EMT 1 ; LST3960 MOV #SOLKBK,-(SP) ; RELEASE DATASET LST3970 EMT QEED 'UPD' EXTENSION THEN UPD4870 CMPB SILKBK+5,SOLKBK+5 ; UPD4880 BNE SA240 ; UPD4890 MOV RUPD,SOFLBK+4 ; CHANGE FILE EXTENSION TO .UPD UPD4900 CMP SIFLBK+4,SOFLBK+4; ARE THEY STILL THE SAME? UPD4910 BNE SA240 ; DIFFERNET NOW. GO AHEAD. UPD4920 MOV A50,ERRNUM ; SET ERROR NUMBER REED 'UPD' EXTENSION THEN UPD4870 CMPB SILKBK+5,SOLKBK+5 ; UPD4880 BNE SA240 ; UPD4890 MOV RUPD,SOFLBK+4 ; CHANGE FILE EXTENSION TO .UPD UPD4900 CMP SIFLBK+4,SOFLBK+4; ARE THEY STILL THE SAME? UPD4910 BNE SA240 ; DIFFERNET NOW. GO AHEAD. UPD4920 MOV A50,ERRNUM ; SET ERROR NUMBER STHE FOUR CHARACTER LST4130 ; ERROR NUMBER. IE ERROR 55 WOULD PLACE THE ASCII CHARACTERS '55' LST4140 ; IN THE SKELETON AT ADDRESS ERRNUM. THE RESULTING MESSAGE WOULD BE LST4150 ; 'S255 '. LST4160 ; THE CALLING PROGRAM MAY ALSO PLACE A SINGLE BINARY LST4170 ; VALUE ON THE TOP OF THE STACK. THIS VALUE WILL BE REMOVED AND LST4180 ; PRINTED AS A FIVE CHARACTER ASCII CHARACTER STRING AFTER BEING T 7 ; LST3980 MOV #ENDLBH,-(SP) ; PRINT ENDING MESSAGE LST3990 MOV #COLKBK,-(SP) ; LST4000 EMT 2 ; LST4010 MOV #COLKBK,-(SP) ; WAIT UNTIL DONE LST4020 EMT 1 ; LST4030 JMP ST100 U UPD4930 MOV R3,-(SP) ; SET 3 ON STACK FOR ERROR MESSAGE UPD4940 JSR PC,ERR ; GO DO ERROR STUFF. UPD4950 JMP ST100 ; GO TRY AGAIN. UPD4960 SA240: CMP SOLKBK+6,CRLKBK+6; THIS TIME TEST SOURCE OUT VS. CORR. UPD4970 BNE SA300 ; CODE IS OTHER WISE THE SAME. UPD4980 CMPB SOLKBK+5,CRLKBK+5 ; UPD4990 V UPD4930 MOV R3,-(SP) ; SET 3 ON STACK FOR ERROR MESSAGE UPD4940 JSR PC,ERR ; GO DO ERROR STUFF. UPD4950 JMP ST100 ; GO TRY AGAIN. UPD4960 SA240: CMP SOLKBK+6,CRLKBK+6; THIS TIME TEST SOURCE OUT VS. CORR. UPD4970 BNE SA300 ; CODE IS OTHER WISE THE SAME. UPD4980 CMPB SOLKBK+5,CRLKBK+5 ; UPD4990 W LST4190 ; CONVERTED BY THE PROGRAM. LST4200 ; THE SUBROUTINE USES THE REGISTER R2. IT IS NOT RESTORED. LST4210 ; LST4220 ERR =. ; ENTRY POINT LST4230 MOV (SP)+,R2 ; SAVE RETURN ADDRESS LST4240 MOV #ERRADD,-(SP) ; SET CHARACTER STRING ADDRESS IN STACK LST4250 X; REQUEST NEXT CSI STRING LST4040 .PAGE LST4050 ; HERE FOR ERROR SHUT DOWN. LST4060 ERROR =. ; LST4070 CLR CS2RET ; FAKE NO MORE INPUT LST4080 BR END100 ; GO CLOSE UP. LST4090 .PAGE Y BNE SA300 ; UPD5000 MOV #SOFLBK,R0 ; UPD5010 MOV #CRFLBK,R1 ; UPD5020 JSR PC,FILECK ; UPD5030 BNE SA300 ; UPD5040 MOV A50,ERRNUM ; UPD5050 MOV R4Z BNE SA300 ; UPD5000 MOV #SOFLBK,R0 ; UPD5010 MOV #CRFLBK,R1 ; UPD5020 JSR PC,FILECK ; UPD5030 BNE SA300 ; UPD5040 MOV A50,ERRNUM ; UPD5050 MOV R4[MOV #5,-(SP) ; SET CONVERSION CODE IN STACK LST4260 EMT 42 ; USE BIN20 FOR CONVERSION LST4270 MOV #ERRLBH,-(SP) ; PUT ERROR MESSAGE ADDRESS IN STACK LST4280 MOV #COLKBK,-(SP) ; PUT OUTPUT LINK BLOCK ADDRESS IN LST4290 EMT 2 ; GO WRITE IT OUT LST4300 MOV #COLKBK,-(SP) ; WAIT TILL DONE LST4310 EMT 1 \ LST4100 ; THIS SUBROUTINE IS USED TO PRINT THE UPDATE SYSTEM ERROR MESSAGES. LST4110 ; THE CALLING CODE MUST PLACE THE PROPER ASCII CODE NUMBERS LST4120 ; IN THE SKELETON. THESE NUMBERS ARE THE LAST TWO OF THE FOUR CHARACTER LST4130 ; ERROR NUMBER. IE ERROR 55 WOULD PLACE THE ASCII CHARACTERS '55' LST4140 ; IN THE SKELETON AT ADDRESS ERRNUM. THE RESULTING MESSAGE WOULD BE LST4150 ; 'S255 '. ],-(SP) ; PUT A 2 ON STACK FOR ERROR MESSAGE UPD5060 JSR PC,ERR ; UPD5070 JMP ST100 ; UPD5080 SA300 =. ; UPD5000 .PAGE UPD5100 ; ALL A-OK. LET'S INITIALIZE AND OPEN THEM. UPD5110 MOV #SILKBK,-(SP) ; IN^,-(SP) ; PUT A 2 ON STACK FOR ERROR MESSAGE UPD5060 JSR PC,ERR ; UPD5070 JMP ST100 ; UPD5080 SA300 =. ; UPD5000 .PAGE UPD5100 ; ALL A-OK. LET'S INITIALIZE AND OPEN THEM. UPD5110 MOV #SILKBK,-(SP) ; IN_ ; LST4320 MOV R2,-(SP) ; RESTORE RETURN ADDRESS LST4330 RTS PC ; RETURN LST4340 .PAGE LST4350 ; CONSTANTS AND VARIABLES LST4360 ; LST4370 ; CONSTANTS ` LST4160 ; THE CALLING PROGRAM MAY ALSO PLACE A SINGLE BINARY LST4170 ; VALUE ON THE TOP OF THE STACK. THIS VALUE WILL BE REMOVED AND LST4180 ; PRINTED AS A FIVE CHARACTER ASCII CHARACTER STRING AFTER BEING LST4190 ; CONVERTED BY THE PROGRAM. LST4200 ; THE SUBROUTINE USES THE REGISTER R2. IT IS NOT RESTORED. LST4210 ; LST4220 ERR aITIALIZE SOURCE INPUT FILE UPD5120 EMT 6 ; UPD5130 MOV #SOLKBK,-(SP) ; SOURCE OUTPUT FILE UPD5140 EMT 6 ; UPD5150 TST SILKBK+010 ; ARE WE IN INSERT MODE? UPD5160 BNE INP010 ; YES. NO CORRECTION FILE THEN. UPD5170 MOV #CRLKBK,-(SP) ; CORRECTIONS bITIALIZE SOURCE INPUT FILE UPD5120 EMT 6 ; UPD5130 MOV #SOLKBK,-(SP) ; SOURCE OUTPUT FILE UPD5140 EMT 6 ; UPD5150 TST SILKBK+010 ; ARE WE IN INSERT MODE? UPD5160 BNE INP010 ; YES. NO CORRECTION FILE THEN. UPD5170 MOV #CRLKBK,-(SP) ; CORRECTIONS c LST4380 DESWCH: .ASCII /DE/ ; FORM OF DELETE SWITCH. LST4390 RDF: .RAD50 /DF/ ; LST4400 RLP: .RAD50 /LP/ ; LST4410 A51: .ASCII /51/ ; BAD SOURCE OUTPUT WRITE LST4420 A52: .ASCII /52/ ; BAD SOURCE INPUT READ LST4430 A55: .ASCII /55/ ; CAN NOT DELETE S/ FILE. (PRd =. ; ENTRY POINT LST4230 MOV (SP)+,R2 ; SAVE RETURN ADDRESS LST4240 MOV #ERRADD,-(SP) ; SET CHARACTER STRING ADDRESS IN STACK LST4250 MOV #5,-(SP) ; SET CONVERSION CODE IN STACK LST4260 EMT 42 ; USE BIN20 FOR CONVERSION LST4270 MOV #ERRLBH,-(SP) ; PUT ERROR MESSAGE ADDRESS IN STACK LST4280 MOV #COLKBe UPD5180 EMT 6 ; UPD5190 MOV CRLKBK+010,LISTSW ; SET LISTING INDICATOR FOR CORR. UPD5200 INP010: .IFG LPLNTH ; DO WE HAVE A LINE PRINTER UPD5210 CMP LISTSW,SOLKBK+010 ; NEXT FIVE LINES WILL SET THE UPD5220 BNE INP020 ; LISTING INDICATOR 'LISTSW' TO ONE UPD5230 TST LISTSW ; IF EITHER THE SOURCE OUTPUT FILE OR f UPD5180 EMT 6 ; UPD5190 MOV CRLKBK+010,LISTSW ; SET LISTING INDICATOR FOR CORR. UPD5200 INP010: .IFG LPLNTH ; DO WE HAVE A LINE PRINTER UPD5210 CMP LISTSW,SOLKBK+010 ; NEXT FIVE LINES WILL SET THE UPD5220 BNE INP020 ; LISTING INDICATOR 'LISTSW' TO ONE UPD5230 TST LISTSW ; IF EITHER THE SOURCE OUTPUT FILE OR gOTECT) LST4440 A60: .ASCII /60/ ; BAD SCAN READ A61: .ASCII /61/ ; STRING EMPTY A70: .ASCII /70/ ; BAD CSI1 SYNTAX LST4450 A71: .ASCII /71/ ; BAD CSI2 (OUTPUT) LST4460 A72: .ASCII /72/ ; BAD CSI2 (INPUT) LST4470 ; VARIABLES LST4480 CONCAT: .WORD 0 ; CONCATINATE SWITCH FLAG. hK,-(SP) ; PUT OUTPUT LINK BLOCK ADDRESS IN LST4290 EMT 2 ; GO WRITE IT OUT LST4300 MOV #COLKBK,-(SP) ; WAIT TILL DONE LST4310 EMT 1 ; LST4320 MOV R2,-(SP) ; RESTORE RETURN ADDRESS LST4330 RTS PC ; RETURN LST4340 .PAGE i UPD5240 BEQ INP030 ; THE CORRECTION FILE HAVE THEIR 'LIST' UPD5250 INP020: INC LISTSW ; SWITCH SET. OTHERWISE A ZERO VALUE UPD5260 ; WILL REMAIN IN 'LISTSW'. UPD5270 MOV #LPLKBK,-(SP) ; LINE PRINTER LINK BLOCK UPD5280 EMT 6 ; UPD5290 MOVB R4,LPFLBK-2 ; OPENO ON LINE PRINTER UPD5300 j UPD5240 BEQ INP030 ; THE CORRECTION FILE HAVE THEIR 'LIST' UPD5250 INP020: INC LISTSW ; SWITCH SET. OTHERWISE A ZERO VALUE UPD5260 ; WILL REMAIN IN 'LISTSW'. UPD5270 MOV #LPLKBK,-(SP) ; LINE PRINTER LINK BLOCK UPD5280 EMT 6 ; UPD5290 MOVB R4,LPFLBK-2 ; OPENO ON LINE PRINTER UPD5300 k LST4490 CS2RET: .WORD 0 ; RETURNED VALUE FROM CSI2 OF SOURCE IN. LST4500 DELETE: .WORD 0 ; DELETE SWITCH FLAG. LST4510 SCNLNT: .WORD 0 ; #CHARACTERS IN SCAN ST-ING. SCSTAR: .WORD 0 ; ADDRESS OF FIRST SCAN CHARACTER .END START ; ALL DONE LST4520 l LST4350 ; CONSTANTS AND VARIABLES LST4360 ; LST4370 ; CONSTANTS LST4380 DESWCH: .ASCII /DE/ ; FORM OF DELETE SWITCH. LST4390 RDF: .RAD50 /DF/ ; LST4400 RLP: .RAD50 /LP/ ; mMOV #LPFLBK,-(SP) ; LINE PRINTER FILE BLOCK ADD UPD5310 MOV #LPLKBK,-(SP) ; UPD5320 EMT 16 ; UPD5330 INP030: .ENDC ; UPD5340 MOVB #4,SIFLBK-2 ; OPENI FOR SOURCE INPUT FILE UPD5350 MOV #SIFLBK,-(SP) ; UPD5360 MOV #SILKBK,-(nMOV #LPFLBK,-(SP) ; LINE PRINTER FILE BLOCK ADD UPD5310 MOV #LPLKBK,-(SP) ; UPD5320 EMT 16 ; UPD5330 INP030: .ENDC ; UPD5340 MOVB #4,SIFLBK-2 ; OPENI FOR SOURCE INPUT FILE UPD5350 MOV #SIFLBK,-(SP) ; UPD5360 MOV #SILKBK,-(p LST4410 A51: .ASCII /51/ ; BAD SOURCE OUTPUT WRITE LST4420 A52: .ASCII /52/ ; BAD SOURCE INPUT READ LST4430 A55: .ASCII /55/ ; CAN NOT DELETE S/ FILE. (PROTECT) LST4440 A60: .ASCII /60/ ; BAD SCAN READ A61: .ASCII /61/ ; STRING EMPTY A70: .ASCII /70/ ; BAD CSI1 SYNTAX LST4450 A71: .ASCII /71/ ; BAD CSI2 (OUTPUT) qSP) ; UPD5370 EMT 16 ; UPD5380 TST SILKBK+010 ; ARE WE IN INSERT MODE? UPD5390 BNE INP050 ; YES. NO CORRECTION FILE THEN. UPD5400 MOVB #4,CRFLBK-2 ; OPENI FOR CORRECTION FILE UPD5410 MOV #CRFLBK,-(SP) ; UPD5420 MOV #CRLKBK,-(SP) ; rSP) ; UPD5370 EMT 16 ; UPD5380 TST SILKBK+010 ; ARE WE IN INSERT MODE? UPD5390 BNE INP050 ; YES. NO CORRECTION FILE THEN. UPD5400 MOVB #4,CRFLBK-2 ; OPENI FOR CORRECTION FILE UPD5410 MOV #CRFLBK,-(SP) ; UPD5420 MOV #CRLKBK,-(SP) ; s LST0900 ; REQUEST TO USER - LINE BUFFER AND HEADER LST0910 COMBFH: .WORD 4 ; MAX BYTE COUNT LST0920 .BYTE 0 ; MODE - NORMAL,FORMATED,ASCII LST0930 .BYTE 0 ; STATUS LST0940 .WORD 4 ; ACTUAL BYTE COUNT LST0950 .BYTE LF,LF,043,VT ; DOWN TWO LINES, A '#', AND WAIT LST0960 ; t LST4460 A72: .ASCII /72/ ; BAD CSI2 (INPUT) LST4470 ; VARIABLES LST4480 CONCAT: .WORD 0 ; CONCATINATE SWITCH FLAG. LST4490 CS2RET: .WORD 0 ; RETURNED VALUE FROM CSI2 OF SOURCE IN. LST4500 DELETE: .WORD 0 ; DELETE SWITCH FLAG. LST4510 SCNLNT: .WORD 0 ; #CHARACTERS IN SCAN ST-ING. SCSTAR: .WORD u UPD5430 EMT 16 ; UPD5440 ; HANDLE THE SOURCE OUTPUT FILE HERE. IF IT ALREADY EXISTS DELETE IT. UPD5450 ; THEN OPEN IT FOR OUTPUT. THESE TWO STEPS REQUIRE THE USE OF THESE UPD5460 ; THREE DOS FUNCTIONS: 1) LOOK, 2) DELETE, 3) OPENO. UPD5470 INP050: MOV #SOFLBK,-(SP) ; USE LOOK TO SEE IF THE FILE EXISTS. UPD5480 MOV #SOLKBK,-(SP) ; v UPD5430 EMT 16 ; UPD5440 ; HANDLE THE SOURCE OUTPUT FILE HERE. IF IT ALREADY EXISTS DELETE IT. UPD5450 ; THEN OPEN IT FOR OUTPUT. THESE TWO STEPS REQUIRE THE USE OF THESE UPD5460 ; THREE DOS FUNCTIONS: 1) LOOK, 2) DELETE, 3) OPENO. UPD5470 INP050: MOV #SOFLBK,-(SP) ; USE LOOK TO SEE IF THE FILE EXISTS. UPD5480 MOV #SOLKBK,-(SP) ; w LST0970 ; SKIP TO NEW PAGE (FORM FEED) LST0980 FFBFH: .WORD 1 ; MAX BYTE COUNT LST0990 .BYTE 0 ; MODE - NORMAL,FORMATED,ASCII LST1000 .BYTE 0 ; STATUS LST1010 .WORD 1 ; ACTUAL BYTE COUNT LST1020 .BYTE FF 0 ; ADDRESS OF FIRST SCAN CHARACTER .END START ; ALL DONE LST4520 y UPD5490 EMT 14 ; LOOK UPD5500 TST (SP)+ ; POP OFF FIRST (UNWANTED) ARGUMENT UPD5510 BITB #200,(SP)+ ; BIT 7 =0 IF FILE DOES NOT EXIST UPD5520 ; =1 IF THE FILE EXISTS UPD5530 BEQ INP070 ; FILE DOESN'T EXIST. MAY NOW OPEN IT. UPD5540 BIT #040000,-(SP) ; FILE EXISTS. IS PROTECT CODE SUCH UPD5550z UPD5490 EMT 14 ; LOOK UPD5500 TST (SP)+ ; POP OFF FIRST (UNWANTED) ARGUMENT UPD5510 BITB #200,(SP)+ ; BIT 7 =0 IF FILE DOES NOT EXIST UPD5520 ; =1 IF THE FILE EXISTS UPD5530 BEQ INP070 ; FILE DOESN'T EXIST. MAY NOW OPEN IT. UPD5540 BIT #040000,-(SP) ; FILE EXISTS. IS PROTECT CODE SUCH UPD5550{ ; FORM FEED LST1030 .EVEN LST1040 .PAGE LST1050 ; LST1060 ; INPUT SOURCE BUFFER AND HEADER LST1070 SRBUFH: .WORD SRLNTH ; MAX BYTE COUNT LST1080 .BYTE 024 ; MODE - D G.LA FCHITSWE ATINATNCCO; 0 D OR.W: ATNCCO 8044ST L S LEABRIVA; 7044ST L T)PUIN (I2CSD BA; 2//7 IISC.A 2:A7 6044ST L ) UTTPOU (I2CSD BA; 1//7 IISC.A 1:A7 5044ST L X TAYN SI1CSD BA; 0//7 IISC.A 0:A7 TYMP ENGRIST; 1//6 IISC.A 1:A6 D EA RANSCD BA; 0//6 IISC.A 0:A6 4044ST L T)ECOT} BEQ INP060 ; THAT IT CAN NOT BE DELETED? UPD5560 MOV A55,ERRNUM ; ERROR. CAN NOT DELETE IT. PROTECT UPD5570 JSR PC,ERR ; CODE IS ON STACK WITH DEVICE FUNCTION UPD5580 JMP ST100 ; GO TRY FOR ANOTHER CSI STRING. UPD5590 INP060: MOV #SOFLBK,(SP) ; FILE CAN BE DELETED. LET'S DO IT. UPD5600 MOV #SOLKBK,-(SP) ; UPD5610 EMT ~ BEQ INP060 ; THAT IT CAN NOT BE DELETED? UPD5560 MOV A55,ERRNUM ; ERROR. CAN NOT DELETE IT. PROTECT UPD5570 JSR PC,ERR ; CODE IS ON STACK WITH DEVICE FUNCTION UPD5580 JMP ST100 ; GO TRY FOR ANOTHER CSI STRING. UPD5590 INP060: MOV #SOFLBK,(SP) ; FILE CAN BE DELETED. LET'S DO IT. UPD5600 MOV #SOLKBK,-(SP) ; UPD5610 EMT UMP,SPECIAL,FORMATED,ASCII LST1090 .BYTE 0 ; STATUS LST1100 .WORD 0 ; ACTUAL BYTE COUNT LST1110 .WORD LPBUF ; POINTER TO BUFFER LST1120 ; LST1130 ; LISTING BUFFER AND HEADER LST1140 LPBUFH: .WORD LPLNTH ; MAX BYTE COUNT PR (. LEFI/ STELEDET NON CA; 5//5 IISC.A 5:A5 3044ST L D EA RUTNP ICEURSOD BA; 2//5 IISC.A 2:A5 2044ST L E ITWRT PUUT OCEURSOD BA; 1//5 IISC.A 1:A5 1044ST L ; P//L 50AD.R P:RL 0044ST L ; F//D 50AD.R F:RD 9043ST L H.TCWI STELEDEF ORMFO; E//D IISC.A: CHSWDE 8043ST L 21 ; DELETE IT. NOW WE CAN OPEN IT. UPD5620 INP070: MOVB R4,SOFLBK-2 ; OPENO FOR SOURCE OUTPUT FILE UPD5630 MOV #SOFLBK,-(SP) ; UPD5640 MOV #SOLKBK,-(SP) ; UPD5650 EMT 16 ; UPD5660 ; TO WORK - AT LAST. UPD5670 TST SILKBK+010 ; 21 ; DELETE IT. NOW WE CAN OPEN IT. UPD5620 INP070: MOVB R4,SOFLBK-2 ; OPENO FOR SOURCE OUTPUT FILE UPD5630 MOV #SOFLBK,-(SP) ; UPD5640 MOV #SOLKBK,-(SP) ; UPD5650 EMT 16 ; UPD5660 ; TO WORK - AT LAST. UPD5670 TST SILKBK+010 ;  LST1150 .BYTE 020 ; MODE - SPECIAL,FORMATED,ASCII LST1160 .BYTE 0 ; STATUS LST1170 .WORD LPLNTH ; ACTUAL BYTE COUNT LST1180 LINENU: .ASCII /00000* / ; LINE NUMBER GOES HERE LST1190 LPBUF =. ; MAIN BUFFER LST1200 .=.+SRLNTH ; RESERVE BUFFER LST12 S NTTANSCO; 7043ST L ; 6043ST L S LEABRIVAD ANS NTTANSCO; 5043ST L E AG.P 4043ST L RNTURE; PC S RT 3043ST L SSREDD ARNTUREE ORSTRE; P)(S,-R2 V MO 2043ST L ; IN INSERT MODE? UPD5680 BNE INP130 ; YES. NO CORRECTIONS. UPD56 0 JSR PC,INCR ; GO READ FIRST CORRECTION CARD UPD5700 TST CREOF ; EOF? UPD5710 BNE INP130 ; YES. UPD5720 CMPB CRBUF,SYMBOL ; IS IT A '-'. UPD5730 BNE INP125 ; NO. ASSUME FORM '-IN INSERT MODE? UPD5680 BNE INP130 ; YES. NO CORRECTIONS. UPD56 0 JSR PC,INCR ; GO READ FIRST CORRECTION CARD UPD5700 TST CREOF ; EOF? UPD5710 BNE INP130 ; YES. UPD5720 CMPB CRBUF,SYMBOL ; IS IT A '-'. UPD5730 BNE INP125 ; NO. ASSUME FORM '-10 ; ; SCAN BUFFER AND HEADER SCBUFH: .WORD SCLNTH ; MAX BYTE COUNT .BYTE 0 ; MODE - NORMAL,FORMATTED,ASCII .BYTE 0 ; STATUS .WORD 0 ; ACTUAL BYTE COUNT SCBUF =. ; SCAN STRING BUFFER .=.+SCLNTH ; ; ; STRING MESSAGE AND HEADER SCMBFH: .WORD 9. ; MAX BYTE COUNT .BYTE 0 ; MODE - NORMAL,FORMATED,ASCII .BYTE 0 1 T EM 1043ST L NEDOL IL TITWA; ) SP-(K,KBOL#C V MO 0043ST L T OUT ITERI WGO; 2 T EM 9042ST L INS ESDRADK OCBLK IN LUTTPOUT PU; ) SP-(K,KBOL#C V MO 8042ST L CKTA SINS ESDRADE AGSSMER ROERT PU; ) SP-(H,LBRR#E V MO 7042ST L ONSIERNVCOR FO0 N2BIE US; 42 T EM 6042ST L CKTA SINE OD CONSIERNVCOT SE; P)(S,-#5 V MO0'. UPD5740 INP090: CMPB CRBUF+1,#'= ; IS THE SECOND SYMBOL A '='? UPD5750 BNE INP095 ; NO. GO CALL ASCBI UPD5760 MOVB CRBUF+2,SYMBOL ; REPLACE UPDATE SYMBOL WITH NEW ONE. UPD5770 ; THIS IS AN INPUT RECORD OF THE FORM UPD5780 ; 'OLD SYMBOL=NEW SYMBOL' UPD5790 JMP INP120 ; GO GET NEXT CORRECTION CARD. 0'. UPD5740 INP090: CMPB CRBUF+1,#'= ; IS THE SECOND SYMBOL A '='? UPD5750 BNE INP095 ; NO. GO CALL ASCBI UPD5760 MOVB CRBUF+2,SYMBOL ; REPLACE UPDATE SYMBOL WITH NEW ONE. UPD5770 ; THIS IS AN INPUT RECORD OF THE FORM UPD5780 ; 'OLD SYMBOL=NEW SYMBOL' UPD5790 JMP INP120 ; GO GET NEXT CORRECTION CARD.  ; STATUS .WORD 9. ; ACTUAL BYTE COUNT .ASCII /STRING: / ; MESSAGE .BYTE VT ; .EVEN ; GET RID OF ODD BYTE ADDRESS ; LST1220 ; CSI BUFFER - MUST PRECEED COMMAND INPUT BUFFER LST1230 CMDBUF: .WORD 0,0,0,0,0,0,0 ; RES 7 WORDS LST1240 ; 5042ST LK ACSTN ISSREDD ANGRISTR TEACARCHT SE; ) SP-(D,ADRR#E V MO 4042ST L S ESDRADN URET RVESA; R2+,P)(S V MO 3042ST L T INPOY TREN; =. R ER 2042ST L ; 1042ST L . EDORSTRET NOS IIT 2. RERSTGIREE THS SE UNETIOUBRSUE TH; 0042ST L . AMGRRO PHE TBYD TEERNVCO; 9041ST L| UPD5800 INP095: JSR PC,ASCBI ; CONVERT ASCII TO BINARY FOR CRST,CREND UPD5810 INP100: CMP LINEI,CRST ; IS CURRENT INPUT LINE=CORRECTION LINE UPD5820 BEQ INP110 ; YES. UPD5830 JSR PC,INSOR ; NO. MOVE UP TO IT. UPD5840 TST SIEOF ; EOF? UPD5850 BNE INP200 ; YES. UPD5860  UPD5800 INP095: JSR PC,ASCBI ; CONVERT ASCII TO BINARY FOR CRST,CREND UPD5810 INP100: CMP LINEI,CRST ; IS CURRENT INPUT LINE=CORRECTION LINE UPD5820 BEQ INP110 ; YES. UPD5830 JSR PC,INSOR ; NO. MOVE UP TO IT. UPD5840 TST SIEOF ; EOF? UPD5850 BNE INP200 ; YES. UPD5860  LST1250 ; CSI INPUT BUFFER LST1260 CSIBFH: .WORD CSLNTH ; MAX BYTE COUNT LST1270 .BYTE 0 ; MODE - NORMAL,FORMATED,ASCII LST1280 .BYTE 0 ; STATUS LST1290 .WORD 0 ; ACTUAL BYTE COUNT LST1300 CSIBUF =. ; BUFFER ADRRESS NGEI BERFT ANGRISTR TEACARCHI CIASR TEACARCHE IV F AASD TEINPR; 8041ST L ND AEDOVEM RBEL IL WUEAL VISTH K.ACSTE THF OOP THE TONE LUVA; 7041ST L RYNABIE GLIN S ACELA PSOALY MAM RAOGPRG INLLCAE TH; 6041ST L . '5 25'S; 5041ST L BED ULWOE AGSSMEG INLTSUREE TH M.NURR ESSREDD AATN TOLEKE SHE TIN; 4041ST L 5''5S ERCTRAHA CIISC AHE TCELA PLDOU W55R ROER IE. ERMBNUR ROER; 3041ST LERCTRAHA CURFOE THx JSR PC,OUTSOR ; OUTPUT THE SOURCE LINE UPD5870 INC LINEI ; INCREMENT INPUT LINE NUMBER UPD5880 JMP INP100 ; UPD5890 INP110: CMP LINEI,CREND ; IS THE CURRENT LINE (INPUT) NUMBER UPD5900 BEQ INP120 ; EQUAL TO THE ENDING LINE NUMBER? UPD5910 JSR PC,INSOR ; IF NOT, SKIP THROUGH FILE UNTIL IT IS. UPD5920 TST SIEOF  JSR PC,OUTSOR ; OUTPUT THE SOURCE LINE UPD5870 INC LINEI ; INCREMENT INPUT LINE NUMBER UPD5880 JMP INP100 ; UPD5890 INP110: CMP LINEI,CREND ; IS THE CURRENT LINE (INPUT) NUMBER UPD5900 BEQ INP120 ; EQUAL TO THE ENDING LINE NUMBER? UPD5910 JSR PC,INSOR ; IF NOT, SKIP THROUGH FILE UNTIL IT IS. UPD5920 TST SIEOF  LST1310 .=.+CSLNTH ; RES BUFFER LST1320 .PAGE LST1330 CS2BLK: .WORD CMDBUF ; POINTER TO CSI BLOCK LST1340 .WORD 0 ; POINTER TO LINK BLOCK LST1350 .WORD 0 ; POINTER TO FILE BLOCK LST1360 .PAGE LST1370 ; F OWO TSTLAE THE ARS ERMBNUE ESTH N.TOLEKE SHE TIN; 2041ST L S ERMBNUE OD CIISC AEROPPRE THE ACPLT US MDECOG INLLCAE TH; 1041ST L S.GESAES MORRR EEMSTSYE ATPD UHE TNTRI PTOD SE UISE INUTROUB SISTH; 0041ST L E AG.P 9040ST L P. USELO CGO; 00D1EN BR 8040ST L UTNP IREMOO NKEFA; ET2RCS R CL 7040ST L t ; EOF? UPD5930 BNE INP200 ; YES. UPD5940 INC LINEI ; NO. INCREMENT INPUT LINE NUMBER UPD5950 JMP INP110 ; GO SEE IF DONE. UPD5960 INP120: JSR PC,INCR ; GET NEXT CORRECTION CARD UPD5970 TST CREOF ; EOF? UPD5980 BNE INP130 ; YES.  ; EOF? UPD5930 BNE INP200 ; YES. UPD5940 INC LINEI ; NO. INCREMENT INPUT LINE NUMBER UPD5950 JMP INP110 ; GO SEE IF DONE. UPD5960 INP120: JSR PC,INCR ; GET NEXT CORRECTION CARD UPD5970 TST CREOF ; EOF? UPD5980 BNE INP130 ; YES.  LST1380 ; LINK BLOCK TABLES LST1390 ; LST1400 ; COMMAND INPUT LINK BLOCK LST1410 .WORD 0 ; ERROR RETURN LST1420 CMLKBK: .WORD 0 ; LINK POINTER LST1430 .RAD50 /LSI/ ; =. R ROER 6040ST L . WNDOT HU SORRR EOR FREHE; 5040ST L E AG.P 4040ST L G INTR SSI CXTNET ESQURE; 0 10ST P JM 3040ST L ; 1 T EM 2040ST L E ON DILNT UITWA; ) SP-(K,KBOL#C V MO 1040ST L ; p UPD5990 CMPB CRBUF,SYMBOL ; IS FIRST SYMBOL A '-'? UPD6000 BEQ INP090 ; YES. GO CONVERT IT. UPD6010 INP125: JSR PC,OUTCR ; NO. GO OUTPUT IT. UPD6020 JMP INP120 ; GO GET NEXT RECORD. UPD6030 INP130: JSR PC,INSOR ; GET NEXT SOURCE INPUT RECORD UPD6040 TST SIEOF ; EOF?  UPD5990 CMPB CRBUF,SYMBOL ; IS FIRST SYMBOL A '-'? UPD6000 BEQ INP090 ; YES. GO CONVERT IT. UPD6010 INP125: JSR PC,OUTCR ; NO. GO OUTPUT IT. UPD6020 JMP INP120 ; GO GET NEXT RECORD. UPD6030 INP130: JSR PC,INSOR ; GET NEXT SOURCE INPUT RECORD UPD6040 TST SIEOF ; EOF?       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!            !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ UPD6050 BNE INP200 ; YES. UPD6060 JSR PC,OUTSOR ; PUT THIS RECORD OUT. UPD6070 JMP INP130 ; GO GET NEXT RECORD. UPD6080 .PAGE UPD6090 ; HERE WHEN ALL DONE WITH INPUT AND CORRECTIONS. UPD6100 ; UPD61RETURN LST1500 COLKBK: .WORD 0 ; LINK POINTER LST1510 .RAD50 /LSO/ ; DATASET NAME LST1520 .BYTE 1 ; NO. WORDS TO FOLLOW LST1530 .BYTE 0 ; UNIT NUMBER LST1540 .RAD50 /KB/ ; DEVICE - KEYBOARD LST1550 ; 4039ST L ; 17 T EM 3039ST L LEFIT PUUT OCEURSOE OSCL; ) SP-(K,KBOL#S V MO: 00D2EN 2039ST L LEFIT PUINT EX NET GGO; 0 10SA P JM 1039ST L ; 1 T EM 0039ST L E ON DILNT UITWA; ) SP-(K,KBOL#S V MO 9038ST L ; 2 T EM 8038ST L h10 INP200 =. ; UPD6120 .IFG LPLNTH ; DO WE HAVE A LINE PRINTER? UPD6130 TST SOLKBK+010 ; DO WE WANT TO LIST NEW SOURCE FILE? UPD6140 BEQ INP282 ; NO. UPD6150 MOV #SOLKBK,-(SP) ; CLOSE SOURCE OUTPUT FILE & DATASET. UPD6160 EMT 17 ; UPD6170 MOV 10 INP200 =. ; UPD6120 .IFG LPLNTH ; DO WE HAVE A LINE PRINTER? UPD6130 TST SOLKBK+010 ; DO WE WANT TO LIST NEW SOURCE FILE? UPD6140 BEQ INP282 ; NO. UPD6150 MOV #SOLKBK,-(SP) ; CLOSE SOURCE OUTPUT FILE & DATASET. UPD6160 EMT 17 ; UPD6170 MOV  LST1560 ; SOURCE INPUT LINK BLOCK LST1570 .WORD 0 ; ERROR RETURN LST1580 SILKBK: .WORD 0 ; LINK POINTER LST1590 .RAD50 /SOR/ ; DATASET NAME LST1600 .BYTE 1 ; NO. WORDS TO FOLLOW LST1610 .BYTE 0 ; UNIT NUMBER LST ; ) SP-(K,KBOL#S V MO 7038ST L D.EE FRMFOE IV GS.YE; P)(S,-FHFB#F V MO 6038ST L . NO; 00D2EN Q BE 5038ST L ? MECOO TESIL FUTNP IREMO; ET2RCS T TS 4038ST L ; 7 T EM 3038ST L E IL FUTNP ICEURSOE ASLERE; ) SP-(K,KBIL#S V MO 2038ST L d #SOLKBK,-(SP) ; CLOSE DONE YET? UPD6180 EMT 1 ; UPD6190 MOVB #1,SOLKBK+4 ; SET NUMBER OF WORDS TO FOLLOW. UPD6200 MOVB #4,SOFLBK-2 ; OPENI ON SOURCE INPUT FILE FOR LISTIN UPD6210 MOV #SOFLBK,-(SP) ; FILE BLOCK UPD6220 MOV #SOLKBK,-(SP) ; LINK BLOCK UPD6230 EMT 16  #SOLKBK,-(SP) ; CLOSE DONE YET? UPD6180 EMT 1 ; UPD6190 MOVB #1,SOLKBK+4 ; SET NUMBER OF WORDS TO FOLLOW. UPD6200 MOVB #4,SOFLBK-2 ; OPENI ON SOURCE INPUT FILE FOR LISTIN UPD6210 MOV #SOFLBK,-(SP) ; FILE BLOCK UPD6220 MOV #SOLKBK,-(SP) ; LINK BLOCK UPD6230 EMT 16 1620 .RAD50 /DF/ ; DEVICE - DISK LST1630 ; LST1640 ; SOURCE OUTPUT (LISTING) LINK BLOCK LST1650 .WORD 0 ; ERROR RETURN LST1660 SOLKBK: .WORD 0 ; LINK POINTER LST1670 .RAD50 /LIS/ ; DATASET NAME LST1680 .BYT ; 1 T EM 1038ST L SELO COR FITWA; ) SP-(K,KBIL#S V MO 0038ST L ; 17 T EM 9037ST L E.IL FUTNP ICEURSOE OSCL; ) SP-(K,KBIL#S V MO 8037ST L ; =. 00D1EN 7037ST L F.EOT PUINE RCOU SOR FREHE; 6037ST L `; UPD6240 CLR R0 ; CLEAR CURRENT LINE NUMBER COUNTER UPD6250 MOV #LINENU,R1 ; SET ADDRESS OF LINE NUMBER (ASCII) UPD6260 ; IN PRINT BUFFER. UPD6270 MOV #3,R2 ; SET CODE FOR BINARY TO DECIMAL CONV. UPD6280 INP220: MOV #SLSTBH,-(SP) ; GET LINE BUFFER HEADER FOR READ UPD6290 MOV #SOLKBK,-(SP) ; LINK BLOCK FOR R; UPD6240 CLR R0 ; CLEAR CURRENT LINE NUMBER COUNTER UPD6250 MOV #LINENU,R1 ; SET ADDRESS OF LINE NUMBER (ASCII) UPD6260 ; IN PRINT BUFFER. UPD6270 MOV #3,R2 ; SET CODE FOR BINARY TO DECIMAL CONV. UPD6280 INP220: MOV #SLSTBH,-(SP) ; GET LINE BUFFER HEADER FOR READ UPD6290 MOV #SOLKBK,-(SP) ; LINK BLOCK FOR RE 5 ; NO. WORDS TO FOLLOW LST1690 .BYTE 0 ; UNIT NUMBER LST1700 .RAD50 /LP/ ; DEVICE LINE PRINTER LST1710 .WORD 0 ; NO. WORDS IN SWITCH LST1720 .WORD 0 ; SWITCH LST1730 .WORD 0 ; NO. WORDS IN SWITCH LST1740 .WORD 0 E AG.P 5037ST L T.SERED ANN OW DUTSHR ROER; R ROER P JM 4037ST L FFTU SORRR EDO; RR,EPC R JS 3037ST L K ACSTN OUSATSTT PU; P)(S,-+2FHBULP V MO 2037ST L R BEUM NORRR EUPT SE; UMRNER1,A5 V MO 1037ST L T.EX NDOO G -OK; 0 15SA Q BE 0037ST L S TUTA SSTTE; +3FHBULP TB\EAD UPD6300 EMT 4 ; READ UPD6310 MOV #SOLKBK,-(SP) ; WAIT TIL DONE UPD6320 EMT 1 ; UPD6330 TSTB SLSTBH+3 ; TEST STATUS OF READ. UPD6340 BEQ INP240 ; OK. KEEP GOING. UPD6350 BITB O100,SLSTBH+3 ; TEST FOR EOF. EAD UPD6300 EMT 4 ; READ UPD6310 MOV #SOLKBK,-(SP) ; WAIT TIL DONE UPD6320 EMT 1 ; UPD6330 TSTB SLSTBH+3 ; TEST STATUS OF READ. UPD6340 BEQ INP240 ; OK. KEEP GOING. UPD6350 BITB O100,SLSTBH+3 ; TEST FOR EOF.  ; SWITCH LST1750 .PAGE LST1760 ; LST1770 ; FILE BLOCKS LST1780 ; LST1790 ; COMMAND INPUT FILE BLOCK LST1800 .WORD 0 ; ERROR RETURN TS 9036ST L T UNCOE YT BALTUACT SERE; +4FHBULPH,NTPL#L V MO 8036ST L ; 1 T EM 7036ST L E ON DILNT UITWA; ) SP-(K,KBOL#S V MO 6036ST L ; 2 T EM 5036ST L CEVIDE; ) SP-(K,KBOL#S V MO 4036ST L UTTPOUE RCOU STOONE IN LUTTPOUE ITWR; ) SP-(H,UFPB#L V MO 3036STX UPD6360 BNE INP280 ; EOF. UPD6370 MOV A56,ERRNUM ; SET UP ERROR CALL. ERROR NUMBER. UPD6380 MOV SLSTBH+2,-(SP) ; ERROR STATUS UPD6390 JSR PC,ERR ; GO DO ERROR STUFF. UPD6400 EMT 60 ; EXIT UPD6410 INP240: INC R0 ; INCREMENT LINE NUMBER UPD6420  UPD6360 BNE INP280 ; EOF. UPD6370 MOV A56,ERRNUM ; SET UP ERROR CALL. ERROR NUMBER. UPD6380 MOV SLSTBH+2,-(SP) ; ERROR STATUS UPD6390 JSR PC,ERR ; GO DO ERROR STUFF. UPD6400 EMT 60 ; EXIT UPD6410 INP240: INC R0 ; INCREMENT LINE NUMBER UPD6420  LST1810 .BYTE 4 ; HOW OPENED (INPUT) LST1820 .BYTE 0 ; ERROR CODE LST1830 CMFLBK: .WORD 0 ; FILE NAME - WORD 1 LST1840 .WORD 0 ; FILE NAME - WORD 2 LST1850 .WORD 0 ; FILE NAME EXTENSION LST1860 .WORD 0 ; USER CODE [GN,UN] L N.IORSVEON CI)CIAS (ALIMEC DTO; 42 T EM 2036ST L RYNABIR FOE OD CTHWIG ONALK ACST; P)(S,-R3 V MO 1036ST L ONR BEUM NNELII CIASF OD.ADT PU; P)(S,-R1 V MO K.ACSTN OERMBNUE IN LRYNABIT PU; P)(S,-R0 V MO 0:21SA . NELIT INPRT N'DO D.UNFOT NO S.YE; 0 15SA BR ERCTRAHA CXTNEY TRO G. NO; 5 17SA E BN ) NELIF OND(E? CR; + 2)(RR,#C PBCM 0:20SA R4E ORSTRE; T MOV R0,-(SP) ; PUT BINARY LINE NUMBER ON STACK UPD6430 MOV R1,-(SP) ; PUT ADDRESS OF LINE NUMBER (ASCII) UPD6440 MOV R2,-(SP) ; ON STACK ALONG WITH CODE FOR UPD6450 EMT 42 ; BINARY TO DECIMAL (ASCII) CONVERSION. UPD6460 MOV #LPBUFH,-(SP) ; BUFFER HEADER FOR WRITE. UPD6470 MOV #LPLKBK,-(SP) ; LINE PRINTER LINK BLOCK FOR WRITE. UPD6480 EMT 2  MOV R0,-(SP) ; PUT BINARY LINE NUMBER ON STACK UPD6430 MOV R1,-(SP) ; PUT ADDRESS OF LINE NUMBER (ASCII) UPD6440 MOV R2,-(SP) ; ON STACK ALONG WITH CODE FOR UPD6450 EMT 42 ; BINARY TO DECIMAL (ASCII) CONVERSION. UPD6460 MOV #LPBUFH,-(SP) ; BUFFER HEADER FOR WRITE. UPD6470 MOV #LPLKBK,-(SP) ; LINE PRINTER LINK BLOCK FOR WRITE. UPD6480 EMT 2  LST1870 .WORD 0233 ; PROTECT CODE LST1880 ; LST1890 ; COMMAND OUTPUT FILE BLOCK LST1900 .WORD 0 ; ERROR RETURN LST1910 .BYTE 2 ; HOW OPENED - OUTPUT LST1920 .BYTE 0 ; ERROR CODE LST1930 CO R4+,P)(S V MO ; R2+,P)(S V MO N.CA SEDILTADEE OREF BTOE ORSTRE; + P)(S T TS 0:19SA E IN LNTRI P. ESCHAT MNGRIST; 0 21SA BR R4E ORSTRE; R4+,P)(S V MO R TEINPOK ACSTE THT SERE; + P)(S+,P)(S P CM Y.TRO TREMO; 0 18SA T BG ERNTOU CTEBYT ENEMCRDE S.HETCMA; P)(S C DE CHAT M'TESDO; 0 19SA E BN . NGRISTG INCKHE CNGGIBE; + 4)(R+,2)P ; WRITE UPD6490 MOV #LPLKBK,-(SP) ; WAIT FOR WRITE TO FINISH UPD6500 EMT 1 ; UPD6510 MOV #LPLNTH,LPBUFH+4; RESET ACTUAL BYTE COUNT FOR WRITE UPD6520 BR INP220 ; GO DO NEXT. UPD6530 INP280: MOV #LPLKBK,-(SP) ; CLOSE LINE PRINTER. UPD6540 EMT 17 ;  ; WRITE UPD6490 MOV #LPLKBK,-(SP) ; WAIT FOR WRITE TO FINISH UPD6500 EMT 1 ; UPD6510 MOV #LPLNTH,LPBUFH+4; RESET ACTUAL BYTE COUNT FOR WRITE UPD6520 BR INP220 ; GO DO NEXT. UPD6530 INP280: MOV #LPLKBK,-(SP) ; CLOSE LINE PRINTER. UPD6540 EMT 17 ; FLBK: .WORD 0 ; FILE NAME - WORD 1 LST1940 .WORD 0 ; FILE NAME - WORD 2 LST1950 .WORD 0 ; FILE NAME EXTENSION LST1960 .WORD 0 ; USER CODE [GN,UN] LST1970 .WORD 0233 ; PROTECT CODE LST1980 ; LST1990 ; SOURCE INPUT FILE (R PBCM 0:18SA K.ACSTN ONTOU CTEBYT PU; P)(S,-NTNLSC V MO CKTA SON2 RVESA; P)(S,-R2 V MO ) R4E AV(SNELIF OSTREE ARMPCO S.YE; P)(S,-R4 V MO D)ENE IN(L? CRT IISN HE T. NO; 0 20SA E BN ? CHAT MERCTRAHA CSTIR FESDO; ) R4,(2)(R PBCM 5:17SA 4 RTOIN. DD AR.HA CANSCT RSFIT GE; R4T,ARSTSC V MO 2 RTOIND OREC RUTNP IOFS ESDRADT GE; 2 ,RUFPB#L V MO 9035ST L ERNTOU CNEL UPD6550 INP282: .ENDC ; UPD6560 MOV #SOLKBK,-(SP) ; CLOSE SOURCE OUTPUT FOR LAST TIME. UPD6570 EMT 17 ; UPD6580 TST SILKBK+010 ; ARE WE IN INSERT MODE? UPD6590 BNE INP285 ; YES. NO CORRECTION FILE THEN. UPD6600 MOV #CRLKBK,-(SP) ; CLOSE CORRECTION FILE &  UPD6550 INP282: .ENDC ; UPD6560 MOV #SOLKBK,-(SP) ; CLOSE SOURCE OUTPUT FOR LAST TIME. UPD6570 EMT 17 ; UPD6580 TST SILKBK+010 ; ARE WE IN INSERT MODE? UPD6590 BNE INP285 ; YES. NO CORRECTION FILE THEN. UPD6600 MOV #CRLKBK,-(SP) ; CLOSE CORRECTION FILE & BLOCK LST2000 .WORD 0 ; ERROR RETURN LST2010 .BYTE 4 ; HOW OPENED - INPUT LST2020 .BYTE 0 ; ERROR CODE LST2030 SIFLBK: .WORD 0 ; FILE NAME - WORD 1 LST2040 .WORD 0 ; FILE NAME - WORD 2 LST2050 .WORD 0 ; FILELIT ENEMCRIN; R0 C IN 0:17SA 8035ST L T.SERED ANN OW DUTSHR ROER; R ROER P JM 7035ST L F.UFSTR ROERO DGO; RR,EPC R JS 6035ST L K ACSTN OUSATSTR ROERT PU; P)(S,-+2FHBUSR V MO 5035ST L GESAES MORRR EUPT SE; UMRNER2,A5 V MO 4035ST L S YE; 00D1EN E BN 3035ST L ? OF EUSATSTO ER-ZON NIS; +3HX Vq1HmWi00{+%6e[3̆Ga[5 /VZWfyė ߢhӹP`nUU(`]ԑT? Mhh,,x?LZ0Ѳz(uj=4z$ cYp_3]X#'υDwoc+i4yEO@bF{|~(T ; 4098PD U ? OR FEDSK AGSINSTLIY AN; 0 D OR.W: SWSTLI 3098PD U . SO= I S 1 = ; 2098PD U . SOL UAEQT NOI S 0 = ; 1098PD.W F:EOCR 7098PD U )ON- 1 (=G LA FOF EUTNP ICEURSO; 0 D OR.W F:EOSI 6098PD U O. N 0 = ; 5098PD U . ES Y 0 > ; 4098PD U ? OR FEDSK AGSINSTLIY AN; 0 D OR.W: SWSTLI 3098PD U . SO= I S 1 = ; 2098PD U . SOL UAEQT NOI S 0 = ; 1098PDA UPD7480 ; NUMBER OF 51. AFTER THE RETURN OF CONTROL FROM ERR AN EMT 60 (EXIT) UPD7490 ; IS GIVEN WHICH TERMINATES THE PROGRAM. UPD7500 ; UPD7510 OUTSOR =. ; ENTRY POINT UPD7520 MOV #SRBUFH,-(SP) ; LINE BUFFER ADDRESS FOR WRITE UPD7550 MOV #SOLKBK,-(SP) ; SOURCE OUT LINK BLOCK FOR WRITE UPD7560 A UPD7480 ; NUMBER OF 51. AFTER THE RETURN OF CONTROL FROM ERR AN EMT 60 (EXIT) UPD7490 ; IS GIVEN WHICH TERMINATES THE PROGRAM. UPD7500 ; UPD7510 OUTSOR =. ; ENTRY POINT UPD7520 MOV #SRBUFH,-(SP) ; LINE BUFFER ADDRESS FOR WRITE UPD7550 MOV #SOLKBK,-(SP) ; SOURCE OUT LINK BLOCK FOR WRITE UPD7560 U. SIO= SLTAUEF D. ENIV GSOO N-1 = ; 0098PD U UTTPOUE RCOU SONG INCKHE COR FAGFL; 0 D OR.W: UTTPOU 9097PD U . ERMBNUE IN LNGDIEN. RRCO; 0 D OR.W D:ENCR 8097PD U R.BEUM NNELIG BE. RRCO; 0 D OR.W : STCR 7097PD UITN IOLMBSYE ATPD UNTREUR CAS H 1TEBY; //- IISC.A: OLMBSY 6097PD U R BEUM NNELIT PUINT ENRRCU; 0 D OR.W I:NELI 5097PD U T.PUINI CS U. SIO= SLTAUEF D. ENIV GSOO N-1 = ; 0098PD U UTTPOUE RCOU SONG INCKHE COR FAGFL; 0 D OR.W: UTTPOU 9097PD U . ERMBNUE IN LNGDIEN. RRCO; 0 D OR.W D:ENCR 8097PD U R.BEUM NNELIG BE. RRCO; 0 D OR.W : STCR 7097PD UITN IOLMBSYE ATPD UNTREUR CAS H 1TEBY; //- IISC.A: OLMBSY 6097PD U R BEUM NNELIT PUINT ENRRCU; 0 D OR.W I:NELI 5097PD U T.PUINI CS  EMT 2 ; WRITE RECORD UPD7570 MOV #SOLKBK,-(SP) ; LINK BLOCK ADD FOR WAIT UPD7580 EMT 1 ; WAIT UNTIL THE I/O IS DONE UPD7590 TSTB SRBUFH+3 ; TEST THE STATUS BYTE UPD7600 BNE OTSO10 ; BRANCH IF ERROR 8ANY TYPE). UPD7610 RTS PC ; RETURN UPD7620 OTSO10: MOV A5 EMT 2 ; WRITE RECORD UPD7570 MOV #SOLKBK,-(SP) ; LINK BLOCK ADD FOR WAIT UPD7580 EMT 1 ; WAIT UNTIL THE I/O IS DONE UPD7590 TSTB SRBUFH+3 ; TEST THE STATUS BYTE UPD7600 BNE OTSO10 ; BRANCH IF ERROR 8ANY TYPE). UPD7610 RTS PC ; RETURN UPD7620 OTSO10: MOV A5G INSSCERO PINE USR FO; 0 D OR.W: ET2RCS 4097PD U S LEABRIVA ; 3097PD U R ROERC PE SONTIECRRCO; 4//7 IISC.A 4:A7 2097PD U D IEIFECSPT PUINE RCOU SNO; 3//7 IISC.A 3:A7 1097PD U R ROERC PE SCEURSOT PUIN; 2//7 IISC.A 2:A7 0097PD U R ROERC PE SUTTPOU; 1//7 IISC.A 1:A7 9096PD U R ROERX TAYN SG INSSCERO PINE USR FO; 0 D OR.W: ET2RCS 4097PD U S LEABRIVA ; 3097PD U R ROERC PE SONTIECRRCO; 4//7 IISC.A 4:A7 2097PD U D IEIFECSPT PUINE RCOU SNO; 3//7 IISC.A 3:A7 1097PD U R ROERC PE SCEURSOT PUIN; 2//7 IISC.A 2:A7 0097PD U R ROERC PE SUTTPOU; 1//7 IISC.A 1:A7 9096PD U R ROERX TAYN S1,ERRNUM ; SET OP ERROR NUMBER UPD7630 CLR -(SP) ; CLEAR NEXT WORD ON STACK FOR BYTE CODE UPD7640 MOVB SRBUFH+3,(SP) ; PUT ERROR STATUS ON STACK UPD7650 JSR PC,ERR ; GO DO ERROR STUFF UPD7660 EMT 60 ; EXIT PROGRAM. UPD7670 .PAGE UPD7680 ; THIS SUBROUTINE IS USED TO READ A 1,ERRNUM ; SET OP ERROR NUMBER UPD7630 CLR -(SP) ; CLEAR NEXT WORD ON STACK FOR BYTE CODE UPD7640 MOVB SRBUFH+3,(SP) ; PUT ERROR STATUS ON STACK UPD7650 JSR PC,ERR ; GO DO ERROR STUFF UPD7660 EMT 60 ; EXIT PROGRAM. UPD7670 .PAGE UPD7680 ; THIS SUBROUTINE IS USED TO READ A I1CS; 0//7 IISC.A 0:A7 8096PD U RSBEUM NNELIE NCUEEQ SOFT OU; 9//5 IISC.A 9:A5 7096PD U. GEAR LTOR BEUM NNELID AR CONTIECRRCO; 8//5 IISC.A 8:A5 6096PD U . ORRR EATRMFOS HAD AR CONTIECRRCO; 7//5 IISC.A 7:A5 5096PD U . ITUNO I/T IS LOMFRR ROER; 6//5 IISC.A 6:A5 4096PD UT)ECOTPR (. LEFIO SLD OTELEDET NON CA; 5//5 IISC.A 5:A5 3096PD U R.ROERT PUUT OONTIECRRCO; I1CS; 0//7 IISC.A 0:A7 8096PD U RSBEUM NNELIE NCUEEQ SOFT OU; 9//5 IISC.A 9:A5 7096PD U. GEAR LTOR BEUM NNELID AR CONTIECRRCO; 8//5 IISC.A 8:A5 6096PD U . ORRR EATRMFOS HAD AR CONTIECRRCO; 7//5 IISC.A 7:A5 5096PD U . ITUNO I/T IS LOMFRR ROER; 6//5 IISC.A 6:A5 4096PD UT)ECOTPR (. LEFIO SLD OTELEDET NON CA; 5//5 IISC.A 5:A5 3096PD U R.ROERT PUUT OONTIECRRCO; SINGLE INPUT SOURCE RECORD. UPD7690 ; NO REGISTERS ARE USED NOR ARE ANY ARGUMENTS PASSED. UPD7700 ; IF AN EOF STATUS IS RETURNED BY THE READ/WRITE PROCESSOR, 'SIEOF' UPD7710 ; WILL BE SET TO +1. ALL OTHER NON-ZERO STATUS SETTINGS WILL CAUSE A UPD7720 ; CALL TO THE PACKAGE ERROR ROUTINE 'ERR' WITH AN ERROR NUMBER OF 52. UPD7730 ; THE ERROR STATUS WILL BE PASSED TO 'ERR' ON THE STACK FOR DISPLAY UPD7740 ; ON THE TTY. SINGLE INPUT SOURCE RECORD. UPD7690 ; NO REGISTERS ARE USED NOR ARE ANY ARGUMENTS PASSED. UPD7700 ; IF AN EOF STATUS IS RETURNED BY THE READ/WRITE PROCESSOR, 'SIEOF' UPD7710 ; WILL BE SET TO +1. ALL OTHER NON-ZERO STATUS SETTINGS WILL CAUSE A UPD7720 ; CALL TO THE PACKAGE ERROR ROUTINE 'ERR' WITH AN ERROR NUMBER OF 52. UPD7730 ; THE ERROR STATUS WILL BE PASSED TO 'ERR' ON THE STACK FOR DISPLAY UPD7740 ; ON THE TTY. 4//5 IISC.A 4:A5 2096PD U ORRR EUTNP IONTIECRRCO; 3//5 IISC.A 3:A5 1096PD U ORRR E/O IUTNP ICEURSO; 2//5 IISC.A 2:A5 0096PD U R.ROERO I/T PUUT OCEURSO; 1//5 IISC.A 1:A5 9095PD U O =SSI- 3 ; 8095PD U R =CSO- 2 ; 7095PD U R =CSI- 1 ; 4//5 IISC.A 4:A5 2096PD U ORRR EUTNP IONTIECRRCO; 3//5 IISC.A 3:A5 1096PD U ORRR E/O IUTNP ICEURSO; 2//5 IISC.A 2:A5 0096PD U R.ROERO I/T PUUT OCEURSO; 1//5 IISC.A 1:A5 9095PD U O =SSI- 3 ; 8095PD U R =CSO- 2 ; 7095PD U R =CSI- 1 ;  UPD7750 ; THIS WILL BE FOLLOWED BY AN EXIT TO TERMINATE THE PROGRAM. UPD7760 ; UPD7770 INSOR =. ; ENTRY POINT UPD7780 MOV #SRBUFH,-(SP) ; SOURCE LINE BUFFER HEAD ADD. UPD7810 MOV #SILKBK,-(SP) ; SOURCE INPUT LINK BLOCK ADDRESS UPD7820 EMT 4 ; READ A RECORD  UPD7750 ; THIS WILL BE FOLLOWED BY AN EXIT TO TERMINATE THE PROGRAM. UPD7760 ; UPD7770 INSOR =. ; ENTRY POINT UPD7780 MOV #SRBUFH,-(SP) ; SOURCE LINE BUFFER HEAD ADD. UPD7810 MOV #SILKBK,-(SP) ; SOURCE INPUT LINK BLOCK ADDRESS UPD7820 EMT 4 ; READ A RECORD 6095PD U . ORRR ESI CS.ERMBNUR ROER; 0//5 IISC.A 0:A5 5095PD U ; B//K 50AD.R B:RK 4095PD U ; T//D 50AD.R T:RD 3095PD U ; F//D 50AD.R F:RD 2095PD U ; R//C 50AD.R R:RC 1095PD U . SOI= SIF. XT ELEFIW NE; / PD/U 50AD.R : PDRU 0095PD U 6095PD U . ORRR ESI CS.ERMBNUR ROER; 0//5 IISC.A 0:A5 5095PD U ; B//K 50AD.R B:RK 4095PD U ; T//D 50AD.R T:RD 3095PD U ; F//D 50AD.R F:RD 2095PD U ; R//C 50AD.R R:RC 1095PD U . SOI= SIF. XT ELEFIW NE; / PD/U 50AD.R : PDRU 0095PD U  UPD7830 MOV #SILKBK,-(SP) ; LINK BLOCK ADDRESS FOR WAIT UPD7840 EMT 1 ; WAIT UNTIL I/O IS DONE UPD7850 TSTB SRBUFH+3 ; TEST STATUS BYTE UPD7860 BNE INSO10 ; BRANCH IF NOT OK UPD7870 RTS PC ; RETURN UPD7880 INSO10: BITB O100,SRBUFH+3 ; TEST FOR EOF UPD7890  UPD7830 MOV #SILKBK,-(SP) ; LINK BLOCK ADDRESS FOR WAIT UPD7840 EMT 1 ; WAIT UNTIL I/O IS DONE UPD7850 TSTB SRBUFH+3 ; TEST STATUS BYTE UPD7860 BNE INSO10 ; BRANCH IF NOT OK UPD7870 RTS PC ; RETURN UPD7880 INSO10: BITB O100,SRBUFH+3 ; TEST FOR EOF UPD7890 TEBYS TUTA SOR FSKMAF EO; 0001 D OR.W : 00O1 9094PD U S NTTANSCO ; 8094PD U ; 7094PD U . GEKAAC PTEDAUPE THY BEDUSS LEABRIVAD ANS NTTANSCOE THE ARE ESTH; 6094PD U E AG.P 5094PD U E.OD CONMMCOO TGO; 10C4AS BR 4094PD U . OWFLEROV. GEAR L TEBYS TUTA SOR FSKMAF EO; 0001 D OR.W : 00O1 9094PD U S NTTANSCO ; 8094PD U ; 7094PD U . GEKAAC PTEDAUPE THY BEDUSS LEABRIVAD ANS NTTANSCOE THE ARE ESTH; 6094PD U E AG.P 5094PD U E.OD CONMMCOO TGO; 10C4AS BR 4094PD U . OWFLEROV. GEAR LBEQ INSO20 ; BRANCH IF NOT UPD7900 INC SIEOF ; SET EOF FLAG. UPD7910 RTS PC ; RETURN UPD7920 INSO20: MOV A52,ERRNUM ; UPD7930 CLR -(SP) ; CLEAR NEXT WORD ON STACK FOR BYTE CODE UPD7940 MOVB SRBUFH+3,(SP) ; PUT ERROR STATUS ON STACK UPD7950 JSR PC,ERR BEQ INSO20 ; BRANCH IF NOT UPD7900 INC SIEOF ; SET EOF FLAG. UPD7910 RTS PC ; RETURN UPD7920 INSO20: MOV A52,ERRNUM ; UPD7930 CLR -(SP) ; CLEAR NEXT WORD ON STACK FOR BYTE CODE UPD7940 MOVB SRBUFH+3,(SP) ; PUT ERROR STATUS ON STACK UPD7950 JSR PC,ERR TOR BEUM NNELI; UMRNER8,A5 V MO: 40C4AS 3094PD U E OD CONMMCOO TGO; 10C4AS BR 2094PD U . RSBEUM NNELIE NCUEEQ SOFT OU; UMRNER9,A5 V MO: 20C4AS 1094PD U ITEX; 60 T EM 0594PD U ; 1 T EM 0494PD U ; ) SP-(K,KBOL#C V MO 0394PD U ; TOR BEUM NNELI; UMRNER8,A5 V MO: 40C4AS 3094PD U E OD CONMMCOO TGO; 10C4AS BR 2094PD U . RSBEUM NNELIE NCUEEQ SOFT OU; UMRNER9,A5 V MO: 20C4AS 1094PD U ITEX; 60 T EM 0594PD U ; 1 T EM 0494PD U ; ) SP-(K,KBOL#C V MO 0394PD U ;  ; GO DO ERROR STUFF UPD7960 EMT 60 ; EXIT UPD7970 .PAGE UPD7980 ; THIS SUBROUTINE IS USED TO READ A SINGLE CORRECTION RECORD UPD7990 ; NO REGISTERS ARE USED NOR ARE ANY ARGUMENTS PASSED. UPD8000 ; IF AN EOF STATUS IS RETURNED BY THE READ/WRITE PROCESSOR, 'CREOF' UPD8010 ; WILL BE SET TO +1. ALL OTHER NON-ZERO STA ; GO DO ERROR STUFF UPD7960 EMT 60 ; EXIT UPD7970 .PAGE UPD7980 ; THIS SUBROUTINE IS USED TO READ A SINGLE CORRECTION RECORD UPD7990 ; NO REGISTERS ARE USED NOR ARE ANY ARGUMENTS PASSED. UPD8000 ; IF AN EOF STATUS IS RETURNED BY THE READ/WRITE PROCESSOR, 'CREOF' UPD8010 ; WILL BE SET TO +1. ALL OTHER NON-ZERO STA 2 T EM 0294PD U ; ) SP-(K,KBOL#C V MO 0194PD U D.OREC RTEDAUPD BAE THT OUE ITWR; ) SP-(H,BFRI#C V MO 0094PD U . FFTU SORRR EUT OUT PGO; RR,EPC R JS 9093PD U. RR EOR FCKTA SINE LUVAD INNDFEOFT PU; ) SP-(),R2-( VBMO: 10C4AS 8093PD U R.ROERT MAOR FOR FREHE; UMRNER7,A5 V MO: 00C4AS 7093PD U RNTURE; PC 2 T EM 0294PD U ; ) SP-(K,KBOL#C V MO 0194PD U D.OREC RTEDAUPD BAE THT OUE ITWR; ) SP-(H,BFRI#C V MO 0094PD U . FFTU SORRR EUT OUT PGO; RR,EPC R JS 9093PD U. RR EOR FCKTA SINE LUVAD INNDFEOFT PU; ) SP-(),R2-( VBMO: 10C4AS 8093PD U R.ROERT MAOR FOR FREHE; UMRNER7,A5 V MO: 00C4AS 7093PD U RNTURE; PC TUS SETTINGS WILL CAUSE A UPD8020 ; CALL TO THE PACKAGE ERROR ROUTINE 'ERR' WITH AN ERROR NUMBER OF 53. UPD8030 ; THE ERROR STATUS WILL BE PASSED TO 'ERR' ON THE STACK FOR DISPLAY UPD8040 ; ON THE TTY. UPD8050 ; THIS WILL BE FOLLOWED BY AN EXIT TO TERMINATE THE PROGRAM. UPD8060 ; UPD8070 ; IF THE LISTING SWITCH IS SET THIS SUBROUTINE WILL PRINT THE TUS SETTINGS WILL CAUSE A UPD8020 ; CALL TO THE PACKAGE ERROR ROUTINE 'ERR' WITH AN ERROR NUMBER OF 53. UPD8030 ; THE ERROR STATUS WILL BE PASSED TO 'ERR' ON THE STACK FOR DISPLAY UPD8040 ; ON THE TTY. UPD8050 ; THIS WILL BE FOLLOWED BY AN EXIT TO TERMINATE THE PROGRAM. UPD8060 ; UPD8070 ; IF THE LISTING SWITCH IS SET THIS SUBROUTINE WILL PRINT THE S RT 6093PD U D.BA. EIINSTCR; 20C4AS BR 2093PD U . OK. NDRESTCR; 20C4AS BR 2093PD U . OK. NDRENOE IN L. ET SIT BGNSI; 40C4AS I BM 2091PD U . LTSURED OLD TEIFSHO TTEBYW NED AD; 3 ,RR1 D AD 0091PD U N 10= 2 N* 5 =R3; R3 L AS 9090PD U 3. RINT ULES RHE T 5N= N N+ 4 =R3; 3 ,RR0 D AD 10C2AS Q BE 5091PD U A MMCOA T IIS; 1 ,R60-054#0 PBCM: 00C2AS 4091PD U E YT BXTNER FOK AC BGO; 00C1AS BR 3091PD UR.ROER 7.7632.>NOE IN L. ET SIT BGNSI; 40C4AS I BM 2091PD U . LTSURED OLD TEIFSHO TTEBYW NED AD; 3 ,RR1 D AD 0091PD U N 10= 2 N* 5 =R3; R3 L AS 9090PD U 3. RINT ULES RHE T 5N= N N+ 4 =R3; 3 ,RR0 D AD - ON TTY. UPD8350 MOV #COLKBK,-(SP) ; GET LINK BLOCK ADDRESS UPD8360 EMT 2 ; WRITE UPD8370 MOV #COLKBK,-(SP) ; WAIT UNTIL DONE. UPD8380 EMT 1 ; UPD8390 .ENDC UPD8400 INCR05: RTS PC ; RETURN . ON TTY. UPD8350 MOV #COLKBK,-(SP) ; GET LINK BLOCK ADDRESS UPD8360 EMT 2 ; WRITE UPD8370 MOV #COLKBK,-(SP) ; WAIT UNTIL DONE. UPD8380 EMT 1 ; UPD8390 .ENDC UPD8400 INCR05: RTS PC ; RETURN 8090PD U CELA PND A10Y BR0 N 4 =R3; R3 L AS 7090PD U LYIPLTMUO TIST ULES RET NN 2 =R3; R3 L AS 6090PD U R TELAD ADR FOE LUVAL NAGIRI OVESA; 0 ,RR3 V MO 5090PD U . ORRR ES. IIT; 00C4AS E BG 4090PD U ) ERMBNUA T NO (GEAR LOO TIFE SE; 2 01,#R1 P CM 3090PD U . ERMBNUD ONEC SOR F50C2ASO T ; 2090PD U  Mhh,,x?LZ0Ѳz(uj=4z$ cYp_3]X#'υDwoc+i4yEO@bF{|~(TE s@01s Wm'M[ݧ &APUQ8y(50=X<Œg9#3}TƐ{<`t\_Db4(!O L d6<{(#2X]A'hw_xO ǴKzPʚjIrD>!DYr&TK`|ԥOkkf1ZtF8L Quu204 Ko-FO2yĥ=*Bdrx1#pm̵ԙatxY=+D2oQ L]). -%m?r%{ɤS7n|I\,nsL߳U.~ԇ$zLe?2.NX Vq1HmWi00{+%6e[3̆Ga[5 /VZWfyė ߢhӹP`nUU(`]ԑT? Mhh,,x?LZ0Ѳz(uj=4z$ cYp_3]X#'υDwoc+i4yEO@bF{|~(TE s@01s Wm'M[ݧ &APUQ8y(50=X<Œg9#3}TƐ{<`t\_Db4(!O L d6<{(#2X]A'hw_xO ǴKzPʚjIrD>!DYr&TK`|ԥOkkf1ZtF8L Quu204 Ko-FO2yĥ=*Bdrx1#pm̵ԙatxY=+D2oQ L]). -%m?r%{ɤS7n|I\,nsL߳U.~ԇ$zLe?2.NX Vq1HmWi00{+%6e[3̆Ga[5 /VZWfyė ߢhӹP`nUU(`]ԑT? Mhh,,x?LZ0Ѳz(uj=4z$ cYp_3]X#'υDwoc+i4yEO@bF{|~(TE s@01s Wm'M[ݧ &APUQ8y(50=X<Œg9#3}TƐ{<`t\_Db4(!O L d6<{(#2X]A'hw_xO ǴKzPʚjIrD>!DYr&TK`|ԥOkkf1ZtF8L Quu204 Ko-FO2yĥ=*Bdrx1#pm̵ԙatxY=+D2oQ L]). -%m?r%{ɤS7n|I\,nsL߳U.~ԇ$zLe?2.NX Vq1HmWi00{+%6e[3̆Ga[5 /VZWfyė ߢhӹP`nUU(`]ԑT? Mhh,,x?LZ0Ѳz(uj=4z$ cYp_3]X#'υDwoc+i4yEO@bF{|~(TE s@01s Wm'M[ݧ &APUQ8y(50=X<Œg9#3}TƐ{<`t\_Db4(!O L d6<{(#2X]A'hw_xO ǴKzPʚjIrD>!DYr&TK`|ԥOkkf1ZtF8L Quu204 Ko-FO2yĥ=*Bdrx1#pm̵ԙatxY=+D2oQ L]). -%m?r%{ɤS7n|I\,nsL߳U.~ԇ$zLe?2.NX Vq1HmWi00{+%6e[3̆Ga[5 /VZWfyė ߢhӹP`nUU(`]ԑT? Mhh,,x?LZ0Ѳz(uj=4z$ cYp_3]X#'υDwoc+i4yEO@bF{|~(TE s@01s Wm'M[