* NAME: (PAL-AP) DOC. 70180311000 REV.H * * PURPOSE * * TO PUNCH SELF-LOADING OBJECT TAPES OF ANY DESIRED * SEGMENT OF MEMORY. * REVISION HISTORY * REV DATE ECO NO. * H * G 01-05-72 10124 * F 08-08-71 9582 * E 08-21-68 6098 * D 02-15-68 5490 * C 12-19-67 5228 * B 10-25-67 4776 * A 10-28-66 RELEASED * * * * * * * * * * COPYRIGHT 1972 BY HONEYWELL INFORMATION SYSTEMS INC. ****************************************************** EJCT * * * STORAGE * * THIS PROGRAM OCCUPIES LESS THAN ONE SECTOR OF CORE. * * * USE * * PAL-AP IS DISTRIBUTED IN PAL MODE AND IN RELOCATABLE OBJECT FORMAT * * PAL MODE: * ALL PAL-FORMAT PROGRAMS MUST BE LOADED IN THE FOLLOWING * MANNER: * 1) THE KEY-IN LOADER (LOCATIONS 1-17) MUST BE MANUALLY * SET AS FOLLOWS: ASR DIGITRONICS * * 1 STA '57 010057 010057 * 2 0CP '0001/4 030004 030001 * 3 INA '1001/4 131004 131001 * 4 JMP *-1 002003 002003 * 5 SNZ 101040 101040 * 6 JMP *-3 002003 002003 * 7 STA 0 010000 010000 * 10 IMA '1001/4 131004 131001 * 11 JMP *-1 002010 002010 * 12 LGL 8 041470 041470 * 13 INA '0001/4 130004 130001 * 14 JMP *-1 002013 002013 * 15 STA* 0 110000 110000 * 16 IRS 0 024000 024000 * 17 SZE 100040 100040 * * 2) PLACE THE LEADER PORTION OF THE PROGRAM IN THE PAPER * TAPE READER. SET THE P-COUNTER T0 000001 AND PRESS START. * (SEE NOTE FOR ASR USERS.) * * NOTE: WHEN USING AN ASR-33. MOMENTARILY PRESS THE START * SWITCH ON THE READER AFTER PRESSING THE COMPUTER START * BUTTON. WHEN USING AN ASR-35. SET THE MODE SWITCH * TO KT, PRESS THE CONTROL KEY (CTRL) AND THE Q KEY * SIMULTANEOUSLY. PRESS THE COMPUTER START BUTTON. AND * SET THE READER SWITCH TO RUN. * THE PROGRAM WILL SELF-LOAD FROM THIS POINT * TO THE CORE AREA FROM WHICH IT WAS PUNCHED. * * RELOCATABLE FORMAT * 1) LOAD THE PROGRAM AS ANY OTHER RELOCATABLE PROGRAM * 2) TO OUTPUT A PAL MODE TAPE, USE INSTRUCTIONS BELOW. * USING LOAD POINT FOR FIRST ADDRESS, AND LOAD POINT * PLUS '577 AS LAST ADDRESS. * * * TO USE PROGRAM: * 1) MASTER CLEAR * 2) SET PROGRAM COUNTER TO XX000 WHERE XX IS THE SECTOR * INTO WHICH PAL-AP HAS BEEN LOADED. * 3) ENTER THE OUTPUT DEVICE CODE INTO THF A-REGISTER. IF * THE ASR-33 IS TO BE USED. SET BIT 1 OF THE A-REGISTER * AND TURN ON THE PUNCH. IF THE ASR-35 IS TO BE USED, * SET BIT 2 OF THE A-REGISTER. IF THE HIGH SPEED * PUNCH IS TO BE USED. LEAVE THE A-REGISTER CLEARED. * 4) PRESS START AND THE PROGRAM WILL HALT. * 5) ENTER INTO THE A-REGISTER THE FIRST APDRESS OF THE PROGRAM * BEING PUNCHED. * 6) PRESS START AND THE PROGRAM WILL HALT. * 7) ENTER INTO THE A-REGISTER THE LAST ADDRESS OF THE * PROGRAM BEING PUNCHED. * 8) PRESS START AND THE SELECTED OUTPUT DEVICE WILL BEGIN * PUNCHING TAPE. * 9) UPON COMPLETION OF THE PUNCH. IF ANOTHER TAPE IS TO BE * PUNCHED ON THE SAME DEVICE. CONTINUE FROM STEP 5. * * * TO GENERATE LOAD AND GO TAPES: * SYSTEM BOOTSTRAP TAPES MAY BE PUNCHED BY CHANGING THREE * LOCATIONS OF PAL-AP. ADDRESSING IS GIVEN IN OCTAL RELATIVE * TO THE FIRST LOCATION OF PAL-AP (IT MUST BE THE FIRST * LOCATION OF A SECTOR). LOCATIONS '613 AND '616 ARE BOTH * "JMP '632" INSTRUCTIONS. AND SHOULD BE CHANGED TO * "JMP* '632" INSTRUCTIONS - I.E. CHANGE FROM JUMP TO JUMP * INDIRECT. LOCATION '632 SHOULD BE CHANGED FROM "OCT 12" TO * "DAC PTR". WHERE PTR IS THE ABSOLUTE ADDRESS FOR * EXECUTION AFTER LOADING THE PAPER TAPE BOOT. * * * METHOD * * PAL-AP IS MADE UP OF TWO SECTIONS. THE PUNCH SECTION (INCLUDING * THE BOOTSTRAR) OCCUPIES XX000-XX577. THE LOADER SECTION (READ IN * BY THE BOOTSTRAP) OCCUPIES XX600-XX777. IN ADDITION TO THESE * THE BOOTSTRAP SECTION WILL LOAD INTO LOCATIONS '20 THROUGH '57, * AND WILL BE IN 8-8 FORMAT. * * * ANY PAL MODE PROGRAM HAS THE FOLLOWING OVERALL STRUCTURE: * 1) PAL-AP FIRST PUNCHES ITS LOADER SECTION IN 8-8 * FORMAT FOLLOWED BY TWELVE INCHES OF LEADER. * 2) NEXT THE DESIRED PROGRAM IS PUNCHED IN PAL FORMAT WHICH * IS "RECOGNIZED" BY THE LOADER. * THE LOADER ON THE FRONT OF THE TAPE WILL LOAD ITSELF AND * THEN WILL LOAD THE PAL-FORMAT PROGRAM. * * * DATA IS PUNCHED IN BLOCKS OF 50 WORDS EACH. SALIENT * CHARACTERISTICS OF THE BLOCK STRUCTURE AREA ARE AS FOLLOWS: * 1) A START OF MESSAGE CHARACTER (OCTAL 201) IS * PUNCHED AT THE BEGINNING OF EACH BLOCK. * 2) FOLLOWING THIS. THE ADDRESS OF THE FIRST MEMORY * LOCATION IS PUNCHED. * 3) EACH BLOCK IS ENDED BY: * A) A CHECKSUM. THIS CONSISTS OF A WORD WHICH * IS THE EXCLUSIVE OR OF ALL WORDS PUNCHED * PLUS A WORD COUNT AND A BLOCK COUNT. * (THE FIRST BLOCK IS ZERO AND EACH ONE THERE- * AFTER IS INCREMENTED BY ONE.) THE * CHECKSUM IS ROTATED RIGHT ONE BIT EACH * TIME ANOTHER WORD IS ADDED TO IT. * B) AN END OF MESSASE CHARACTER (OCTAL 223). * THE EOM IS FOLLOWED BY A RUBOUT CHARACTER (OCTAL 377) * 4) SIX FRAMES OF LEADER ARE PUNCHED BETWEEN BLOCKS * AND TWELVE INCHES OF LEADER ARE PUNCHED * AT THE BEGINNING AND END OF THE PROGRAM. * * THE FORMAT OF THE PUNCHED WORDS IS AS FOLLOWS: * 1) NON-ZERO WORDS ARE PUNCHED IN "INVISIBLE CODE". * EACH 16-BIT WORD IS WRITTEN AS A FOUR-BIT AND * TWO SIX-BIT CHARACTERS ON TAPE. THE FOUR-BIT * CHARACTER REPRESENTS THE HIGH-ORDER FOUR * BITS 0F THE WORD. EACH SIX-BIT CHARACTER * HAS THE HIGH-ORDER BIT IN CHANNEL EIGHT AND THE * FIVE LOW-ORDER BITS IN CHANNELS FIVE THROUGH * ONE. ORDINARILLY, NOTHING IS WRITTEN IN CHANNELS * EIGHT THROUGH FIVE OF THE FOUR-BIT CHARACTER * OR IN CHANNELS SIX AND SEVEN OF THE SIX-BIT * CHARACTERS. * 2) EIGHT CHARACTERS CAUSE SPECIAL ACTION BY THE ASR. * THESE ARE 023 AND 223 (X-0FF). 021 AND 221 (X-0N), 012 * AND 212 (LINE FEED), 005 AND 205 (WRU). THESE ARE * TRANSLATED INTO 177 AND 377, 176 AND 376, 175 AND * 375, 174 AND 374, RESPECTIVELY. IN THE CASE OF EACH OF * THESE CHARACTERS, CHANNELS SIX AND SEVEN ARE PUNCHED, * 3) WHEN ONE OR MORE CONSECUTIVE ZERO WORDS ARE * ENCOUNTERED IN MEMORY, THEY ARE REPRESENTED BY * ONE PUNCHED WORD. THIS CONSISTS OF THE TWO'S COMPLEMENT * OF THE NUMBER OF CONSECUTIVE ZERO WORDS ENCOUNTERED. IN * ORDER TO DISTINGUISH THESE Z-COUNT WORDS, CHANNEL EIGHT * OF THE HIGH-ORDER (FOUR-BIT) CHARACTER IS PUNCHED * * * NOTE: THE WORD COUNT CONSISTS OF THE TOTAL NUMBER OF * WORDS ENCOUNTERED WHILE PUNCHING A BLOCK INCLUDING ALL * ZERO WORDS. * * * ************************************************************************ REL EXD ENTER EXTENDED MODE * LOAD A WITH DEVICE CODE EXA ENABLE EXTENDED ADDRESSING STA CODE SAVE DEVICE CODE BEGN CRA HLT ENTER FIRST ADDRESS STA FADD SAVE IT CRA HLT ENTER LAST ADDRESS STA LADD SAVE IT LDA CODE PICK UP DEVICE CODE SMI IS ASR-33 IN USE JMP TE35 NO. CRA STA PON STA RUB SOCP LDA EASR STA EPNC LDA PASR REPLACE OTA '2 WITH OTA '4 SOTA STA TPON+2 SET OTA'S STA TPON+5 SET OTA'S STA BGBL+5 SET OTA'S STA XOF+2 SET OTA'S STA XOF+5 SET OTA'S STA LLOP+1 SET OTA'S STA OK+1 SET OTA'S STA P+2 SET OTA'S STA ORUB+1 SET OTA'S JMP CONT TE35 ALR 1 TEST FOR ASR-35 SMI IS ASR-35 IN USE JMP HISP NO. LDA ='222 STA PON INITIALIZE PUNCH LDA ='377 AND RUBOUT CODES STA RUB JMP SOCP HISP CRA HIGH SPEED PUNCH IN USE STA PON STA RUB LDA EBRP OCP '2 STA EPNC LDA PBRP OTA '2 JMP SOTA STORE IT AWAY CONT CRA STA BLCT BLOCK COUNT STA ZCNT AND ZCOUNT STA Z EPNC OCP '2 ENABLE PUNCH JST TPON TURN PUNCH ON JMP LDR GO TO PUNCH LEADER LEAD DAC ** ROUTINE TO PUNCH 12 INCHES OF LEADER LDA N120 SET INDEX FOR 120 FRAMES STA NDX AND GO TO JMP *+4 PUNCH PNC DAC ** LDA PNC STORE RETURN ADDRESS STA LEAD IN LEAD LLOP CRA LEADER LOOP OTA '2 OUTPUT LEADER JMP *-1 IRS NDX JMP *-4 STA WDCT JMP* LEAD RETURN LDR JST LEAD GO TO PUNCH 12 INCHES OF LEADER LDA ='52 GET FIRST RETURN FOR CHAR SUBROUTINE STA CHAR STA SWCH INITIALIZE TO PRISTINE CONDITION STA WORD INITIALIZE TO PRISTINE CONDITION LDA NBL1 LENGTH OF FIRST LEVEL BOOT (NEG) STA NDX FIRST LDA LOAD BLOCK STA PN88 OF JST PN PUNCH BL1 IRS PN88 OMIT THE OCP OF BL2 IRS PN88 OMIT THE INA OF BL2 LDA NBL2 LENGTH OF SECOND LEVEL BOOT (NEG) STA NDX BLOCK JST PN PUNCH SECOND LEVEL BOOT ORUB LDA ='377 OTA '2 JMP *-1 JST TPON JST LEAD TURN PUNCH ON. PUNCH LEADER JMP BGBL+1 * * BEGIN PUNCHING BLOCK OF CHARACTERS * BGBL JST TPON LDA N6 BEGIN BLOCK. SET INDEX FOR STA NDX SIX FRAMES OF LEADER JST PNC AND PUNCH LDA SOM LOAD START-OF-MESSAGE OTA '2 PUNCH JMP *-1 (DELAY IF PUNCH NOT READY) LDA N50 INITIALIZE STA PNCT PUNCH COUNT LDA BLCT INITIALIZE CHECKSUM STA CKSM WITH BLOCKCOUNT IRS BLCT AND INCRENENT BLOCKCOUNT LDA FADD LOAD FIRST ADDRESS OF BLOCK SUB =1 JST LOOP AND PUNCH IT. LDA Z STA ZCNT LDA SAVE JMP *+2 MOVE IRS FADD INCREMENT FIRST ADDRESS IRS WDCT AND WORD COUNT ERA CKSM UPDATE CHECKSUM WITH ARR 1 STA CKSM CHARACTER JUST PUNCHED IRS PNCT INCREMENT PUNCHCOUNT JMP *+2 50 WORDS NOT YET PUNCHED JMP ENBL 50 WORDS PUNCHED-END BLOCK JST DECD CHECK IF ZCOUNT ZERO JMP GO NO,PUNCH STORED WORD LDA* FADD YES, LOAD NEXT WORD FROM MEMORY SZE IS IT ZERO JMP NZZZ NO IRS ZCNT YES,INCREMENT ZCOUNT IRS WDCT AND WORDCOUNT IRS FADD AND FIRST ADDRESS IRS PNCT BUMP WORD COUNT JMP CKLA CHECK FOR LAST ADDRESS LDA ZCNT GO TERMINATE BLOCK JST LOOP PUNCH NO. OF ZERO WORDS ERA CKSM CALCULATE NEW CKSM ARR 1 * STA CKSM SAVE IT CRA RESET ZCOUNT STA ZCNT DO IT JMP ENBL GO FINISH BLOCK NZZZ STA WD WORD NOT ZERO, STORE IT LDA ZCNT CHECK ZCOUNT SNZ IS IT ZERO JMP GO+2 JST LOOP NO, TAKE ZCOUNT. PUNCH, JMP MOVE+2 RETURN DECD DAC ** DECISION SUBROUTINE LDA ZCNT CHECK ZCOUNT SNZ IS IT ZERO IRS DECD YES, INCREMENT RETURN ADDRESS CKLA LDA FADD NO, CHECK SUB =1 ERA LADD LAST SZE ADDRESS JMP* DECD NOT REACHED. RETURN JMP CHEK LAST ADDRESS REACHED, CHECK ZCOUNT GO CRA RESTORE STA ZCNT ZCOUNT TO ZERO LDA WD TAKE STORED WORD JST LOOP AND PUNCH IT JMP MOVE AND CONTINUE. * * END BLOCK * ENBL LDA ZCNT STA Z CRA STA ZCNT LDA WDCT ERA CKSM WITH CHECKSUM JST LOOP AND PUNCH JST XOF PUNCH XOFF JMP BGBL BEGIN NEW BLOCK ZNZ JST LOOP ZCOUNT NOT ZERO, PUNCH IT. ERA CKSM UPDATE ARR 1 STA CKSM CHECKSUM CRA STA ZCNT LDA WDCT LOAD WORD COUNT AND ERA CKSM ERA IT WITH CHECKSUM JST LOOP PUNCH CHECKSUM JST XOF PUNCH TWO XOF'S JST TPON TURN PUNCH ON JST XOF SECOND XOF JST TPON JST LEAD TURN PUNCH ON, PUNCH LEADER LDA CODE PICKUP OUTPUT DEVICE ALR 1 CHECK IF ASR-35 SMI * SKP EITHER 33 OR H/S JST XOF STOP PUNCH ON ASR-35 JMP DONE GO WRAP UP CHEK LDA ZCNT IS ZCOUNT ZERO SZE JMP ZNZ NO, PUNCH IT JMP ZNZ+6 XOF DAC ** PUNCH XOFF ROUTINE LDA XOFF LOAD XOFF OTA '2 PUNCH JMP *-1 (DELAY IF PUNCH NOT READY) LDA ='377 OTA '2 JMP *-1 JMP* XOF RETURN LOOP DAC ** MAIN PUNCH LOOP JST TEST IS WORD A ZCOUNT ERA ='100000 YES, PUT ONE IN HIGH ORDER BIT JST PNCH PUNCH JST PNCH THREE JST PNCH CHARACTERS JMP* LOOP RETURN TEST DAC ** STA SAVE SAVE WORD LDA ZCNT SNZ JMP *+5 ERA =-1 TAKE TWO'S ADD =1 COMPLEMENT STA SAVE UPDATE SAVE JMP *+3 CONTINUE IRS TEST ZCOUNT ZERO, CONTINUE LDA SAVE REGAIN SAVE ARR 2 POSITION CHARACTER STA SAVE ANA ='36000 CLEAR TO CHARACTER JMP* TEST RETURN HOB LGR 10 CHANGE HIGH-ORDER ANA ='37 BIT FROM CHANNEL 6 ERA ='200 TO CHANNEL 8 JMP *+5 AND GO TO PUNCH PNCH DAC ** PUNCH ROUTINE SPL CHECK FOR JMP HOB HIGH ORDER BIT LGR 10 POSITION CHARACTER STA SAVA STORE IT ANA ='37 SET UP FOR TRANSLATION CHECK STA SAVB STORE LDA ADC1 LOAD ADDRESS OF TABLE STA ADC2 SETUP FOR CHECK LDA* ADC2 LOAD FROM TABLE SNZ CHECK FOR END OF TABLE JMP OK DONE, NO TRANSLATION NEEDED ANA ='377 CLEAR 9 HIGH-ORDER BITS ERA SAVB CHECK FOR SNZ MATCH JMP TRNS YES, TRANSLATE IRS ADC2 NO, INCREMENT ADDRESS JMP *-8 AND RETURN. TRNS LDA SAVA PICK UP ORIGINAL CHARACTER ANA ='200 CLEAR ALL BUT BIT 8 STA SAVA SAVE BIT LDA* ADC2 PICK UP SUBROUTINE LGR 8 CHARACTER ERA SAVA OBTAIN CORRECT BIT 8 JMP *+2 PUNCH OK LDA SAVA NO TRANSLATION, GET CHARACTER OTA '2 PUNCH JMP *-1 (DELAY IF PUNCH NOT READY) LDA SAVE POSITION WORD ALR 6 FOR NEXT CHARACTER STA SAVE STORE CHARACTER JMP* PNCH AND RETURN DONE OCP '102 JMP BEGN RESTART IF DESIRED P DAC ** ARR 8 OTA '2 PUNCH JMP *-1 JMP* P PN PZE ** PN88 PZE ** JST P PUNCH LOAD PROGRAM JST P IN 8-8 FORMAT IRS PN88 IRS NDX JMP PN88 JMP* PN TPON DAC ** TURN PUNCH ON LDA PON OUTPUT '222 OTA '2 IF ASR-35 IN USE. JMP *-1 LDA RUB OUTPUT '377 OTA '2 IF ASR-35 IN USE. JMP *-1 JMP* TPON ADC1 DAC C1 ADDRESS OF C1 ADC2 BSS 1 * * TRANSLATION TABLE. ILLEGAL CHARACTER (7 LOW ORDER BITS) * IN RIGHT-HAND HALF, AND SUBSTITUTION CHARACTER (7 LOW ORDER BITS) * IN LEFT-HAND HALF. * C1 OCT 77423,77021,76412,76005,0 * EASR OCP '104 PASR OTA '4 EBRP OCP '2 PBRP OTA '2 N6 DEC -6 NBL1 DAC ST-BL2 NEGATIVE LENGTH OF FIRST LEVEL BOOT N50 DEC -50 N120 DEC -120 NBL2 DAC WAIT-STPC-1 NEG LENGTH OF SECOND LEVEL BOOT LOAD LDA ST STARTING ADDRESS SOM OCT 201 XOFF OCT 223 Z BSS 1 FADD BSS 1 LADD BSS 1 BLCT BSS 1 WDCT BSS 1 ZCNT BSS 1 PNCT BSS 1 CKSM BSS 1 NDX BSS 1 WD BSS 1 SAVE BSS 1 SAVA BSS 1 SAVB BSS 1 CODE BSS 1 PON BSS 1 RUB BSS 1 FIN BSZ '40 * * SYSTEM BOOTSTRAP * ORG '540 ST DAC '20 STARTING ADDRESS * 1 STA '57 010057 * 2 OCP '000X 03000X * 3 INA '100X 13100X * 4 JMP *-1 002003 * 5 SNZ 101040 * 6 JMP *-3 002003 * 7 STA 0 010000 * 10 INA '100X 13100X * 11 JMP *-1 002010 * 12 LGL 8 041470 * 13 INA '000X 13000X * 14 JMP *-1 002013 * 15 STA* 0 110000 * 16 IRS 0 024000 * 17 SZE 100040 JMP '10 00020 TO FILL OUT BOOTSTRAP LDA '41 00021 SET NEXT REENTRY STA '21 00022 * LDA '57 00023 SET STARTING ADDRESS SZE 00024 * STA '54 00025 LDA '54 00026 STA 0 00027 * ADD '55 00030 STA '55 00031 EXA 00032 LDA '13 00033 SET IO ORDERS ANA '44 00034 STA* 0 00035 * IRS 0 00036 * LDA '10 00037 * JMP '15 00040 * JMP '42 00041 SECOND REENTRY STA '25 00042 CLEAR WORDCOUNT SKP 00043 OCT 77777 00044 NOP 00045 LDA '51 00046 END. SET UP FINAL REENTRY STA '20 00047 * JMP '10 00050 * JMP* '54 00051 CRA 00052 JMP* '55 00053 AUTOMATIC LOAD DAC BL2 00054 DEFAULT START OCT 33 00055 OCT 0 00056 TERMINATE FIRST SECTION * * LOADER BL2 OCP 1 INA 1 * WAIT JMP *-1 OCP '101 READER OFF IF ON STA '22 ERA STPC STOP CODE TEST SZE JMP* CHAR LDA* CHAR ERA SCAN TEST FOR SCAN MODE SNZ JMP ENDT LDA '25 SNZ JMP ENDT END FILE EXIT ERA '20 ALR 1 ERA '21 SZE JMP EROR STA '25 RESET WORD COUNT JST CHAR BUMP IRS '24 INCREMENT BLOCK COUNT JMP STRT+1 EROR OCT 12 ERROR HALT JMP *-1 HALT AGAIN IF STARTED ENDT OCT 12 HALT, TAPE LOADED NORMALLY STRT STA '24 RESET BLOCK COUNT CRA STA '22 RESET CHARACTER BUFFER LDA '10 TEST FOR HIGH SPEED READER ARR 1 SPL JMP SCAN-3 SKS '104 JMP *-1 OCP '104 LDA ='221 OTA 4 SKS '104 JMP *-1 OCP 4 LDA '22 JMP *+2 TURN ON TELEPRINTER JST CHAR LEADER SCAN SCAN ERA ='22 START OF MESSAGE SZE JMP *-3 * STA 0 * STA '25 RESET WORD COUNT LDA '24 STA '20 INITIALIZE BLOCK JST CHAR DATA JST SWCH JMP *-1 DO DATA LOAD JST WORD DO ZERO LOAD ERA =2 STA '21 ERA '20 ARR 1 STA '20 CRA STA* 0 IRS '25 ADD TO WORD COUNT IRS 0 IRS '21 JMP *-4 ADD TO WORD COUNT JMP DATA SWCH PZE '52 INITIALIZED NONZERO CONSTANT JST WORD STA* 0 IRS 0 IRS '25 ADD TO WORD COUNT ERA '20 ARR 1 STA '20 JMP* SWCH WORD PZE '52 INITIALIZED NONZERO C CRA STA '21 JST CHAR JST CHAR JST CHAR LGL 8 SMI TEST FOR ZERO-COUNT WORD IRS SWCH LDA '21 ARR 1 JMP* WORD CHAR DAC '52 FIRST TIME IN-RETURN VIA '52 LDA '22 LGL 8 SPL IRS '21 LGL 1 ERA ='174000 SNZ LDA ='171000 ERA ='1000 SNZ LDA ='167000 ERA L1 SNZ LDA L2 ERA ='1000 SNZ LDA L3 ERA L4 LGL 2 ERA '21 IN ACC, READ NEXT, ALR 6 EXIT ON STOP CODE, STA '21 OTHERWISE TRANSLATE JMP WAIT-2 FIN L1 OCT 2000 L2 OCT 154000 L3 OCT 157000 L4 OCT 176000 OCT 0 STPC OCT 223 * LOCATION FUNCTION * * 20 CHECKSUM * 21 ACCUMULATOR * 22 CHARACTER BUFFER * 24 BLOCK COUNT * 25 WORD COUNT END