return to main pageDan McInnis -
BIG PRINT with Tape
Started April 16, 2008 Table of Contents
Dan's BigPrint/Tape Users Guide Source Code Listing Object Deck Blurb-Draft
Dan's BigPrint/Tape Users Guide - Rough Draft 3/24,2008Dan's WORD version
BigPrint/Tape Users Guide Rough Draft 3/24,2008 The BigPrint/Tape program was originally written by Ed Thelen. Dan Mcinnis has added several enhancements. The program was chosen to be used along with a verbal demo presentation as a CHM demo offering to visitors.
The program deck has the following organization:
A: Object deck B: "Blurb" deck C: "-" end of deck control card D: Date card. E: Visitor name cards . F: Control cards. As desired by Docent G: "-" end of deck control card The program uses the following sense switches:
1: SS A Last card detection (currently is inoperative, thus the use of "-" card). 2: SS B OFF write to tape ON skip tape writing 3: SS C OFF print ON skip printing 4: SS D OFF Punch cards ON skip punching 5: SS E: OFF stacker select ON skip stacker select The sense switches may be turned on or off at any time while the program is running
The intended use is at program load time to disable using a feature that is inoperative
Thus if all features are working all switches except A would be off. The A switch should be ON. (the feature may be fixed).Control cards:
Control card usage permits changing program operation by inserting the cards into the visitor name card deck to provide halts and other functions. The program output consists two pages of print for each name card encountered.
- '-' end of deck card has a minus sign in col 1 all other columns are ignored. This is used to signal end of blurb cards. Also used to signal end of program (if A switch is off or inoperative)
- '$' stop printing card has a dollar sign in col 1 all other columns are ignored. the program halts when this card is encountered, the run button is pushed to continue the program. Name cards will continue to be read but there will be no further printing or punching. Could be used to increase tape write time.
- '=' change tape record size card has an equal sign in col 1 all other columns are ignored. The original tape record size is 332 characters. This feature enables records of 2700 characters to be written. This is a way to write enough tape to provide a high speed rewind. The program halts when this card is read and the run button must be pushed to continue. The use of the '$ card and blank cards may be necessary to reach high speed rewind. The '$' card would be inserted after the last guest name card and 'dummy' cards added (the number to be dependent on the number of guests and how many total cards are needed to get to high speed rewind on tape drive) these would be followed by the end of card control card.
- '?' Halt card has a question mark in col 1 all other columns are ignored. This enables halts while the program is running. The presenter may want to halt in order to provide explanations. The printer is noisy. Pressing run will continue the program.
The first page has the following all in "big print" format: visitors name, followed by the information on the date card followed by "VISITED THE COMPUTER HISTORY MUSEUM "The second page contains a full page of single spaced 1401 information. the 'blurb', this consists of a deck of cards the first 65 columns is used in each card thus 2 cards are needed for each line of print. The blurb deck immediately follows the last object card (the clear read area and branch to start of program card) and is followed by a '-' control card to indicate end of the deck.The program will stacker select the name cards into stacker 1, this helps when the cards are to be given to the guests.Note: Preceding the date by "ON " makes a more sensible presentation.
The program will also punch the guest name. They would also be given to guest, let him check for punch errors.
The program will write a tape record for each print line. Thus the tape drive will continuously write.
All the above are under control of sense switches and control cards. When the last card is read or end of deck control card encountered, the program rewinds tape and halts. The demo will probably require two people- a presenter and an operator. Before the demo the operator will bring up power on all components, Run an assurance program to insure all features are operational and use sense switches to disable any 'down' features. The operator will have to insure that cards are in the punch station, the tape drive has a tape mounted and loaded and that low density has been selected. The printer paper has to be positioned to be a beginning of the page and the carriage control tape reset. During the presentation the operator will have to depress the run button whenever a program halt is encountered, this depends on control card usage. The program without control cards has only one halt at the beginning of the program and at end of program.
The master program deck and 'blurb' cards will be kept in the restoration lab. There should be several decks produced and stored. The operator will be responsible to know where the decks are located. The operator will keypunch the date and name cards and insert them into their correct locations in the program deck before the demo begins.
The use of control cards will have to be coordinated with each docent presenter, and desired ones inserted along with the name cards.
Program Halts:
343 – Beginning of program halt. Press run to start reading blurb cards.534 – End of program. Does not restart.
1540 – Dollar control card sensed, stop printing, press run to continue.
1566 – Question mark control card sensed. press run to continue.
1557 – Equal control card sensed, write long tape records, press run to continue
Dan's BigPrint/Tape Source Code .S
* BIGPRINT/TAPE * PROGRAM BY ED THELEN * MODIFIED BY DAN MCINNIS APRIL 1,2008 * ADDED SENSE SWITCH CONTROLS AND CONTROL CARDS * SS B OFF - WRITE TO TAPE ON - SKIP TAPE WRITING * SS C OFF - PRINT ON - SKIP PRINTING * SS D OFF - PUNCH ON - SKIP PUNCHING * SS E OFF - SS NAME CARDS ON - DON'T SS NAME CARDS * CONTROL CARD - COL 1 END OF BLURB CARDS OR * END OF NAME CARDS GO TO PROGRAM END * CONTROL CARD $ HALT AND THEN STOP PRINTING AND PUNCHING * CONTROL CARD ? HALT PRESS RUN TO RESTART * CONTROL CARD = HALT AND THEN CHANGE TO LONG TAPE RECORDS INBUF DS 1 * ORG 87 X1 DSA 0 * index register 1 ORG 92 X2 DSA 0 * index register 2 ORG 97 X3 DSA 0 * index register 3 * ORG 201 * START PRINT OUTPUT AREA PRNTA DC 1 PRNTA1 DC 1 PRNTA2 DC 1 PRNTA3 DC 1 PRNTA4 DC 1 * * ------------------------------------------------------------- ORG 335 * START ORIGINAL PROGRAM AREA PICKUP DCW 000 START2 CS 80 * CLEAR WORD MARKS FROM CARD READ H * HALT TO CHECK PAPER AND TAPE SW 001 * SET WORD MARK B LOADTS * CALL SUB TO READ TEXT UNTIL - R * READ DATE CARD MCW 25,DATE25 * PUT IT IN A SAFE PLACE RDGEST BSS SKIPC1,C * IF C SWITCH ON SKIP PAPER SKIP CC 1 * TOP OF FORM SKIPC1 R * READ GUEST CARD BSS SKST,E * SKIP STACKER SELECT SS 1 * GUEST CARD IN STACKER 1 SKST C LMINUS,001 * IS FIRST COL MINUS? BE NEND * YES, STOP C LQUES,001 BE DOQUES C L1DOL,001 * IS IT A DOLLAR CARD BE DODOL * GO SET DODOL SWITCH C L1EQU,001 * IS IT EQUAL CARD BE DOEQU * GO SET EQU SWITCH BSS NEND,A * TEST FOR LAST CARD C DOLSW,ONE1 * IS DOLLAR SWITCH ON BE SKIPPU * SKIP PUNCH BSS SKIPPU,D * SKIP PUNCHING LCA 080,180 * P * PUNCH GUEST CARD * NEW TOP OF FORM * GUEST CARD IMAGE IN CARD READ AREA SKIPPU B BIGPRT * CALL SUB TO PROCESS GUEST CARD & VISITED * DOUBLE SIZE CONTROL IS RETURNED AS ZERO OK * MCW L1V0,DOUBLE * SET FOR SINGLE SIZE BIG PRINT MCW DATE25,WORK * PRINT DATE LINE B PRINTS MCW LINE3,WORK B PRINTS MCW LINE4,WORK B PRINTS BSS SKIPC2,C * SKIP PAPER TOP OF FORM IF SENSE SWITCH C ON CC 1 * TOP OF FORM SKIPC2 B PNTTXT * PRINT TEXT DATA FROM MEMORY B RDGEST * AND GOTO NEXT GUEST CARD * NEND SS 1 BSS SKIPC3,C * SKIP TOP OF FORM IF SS C ON CC 1 * TOP OF FORM SKIPC3 BSS NOREW,B * IF NOT SSB REWIND TAPE RWD 1 * REWIND TAPE - HOPEFULLY HSPEED NOREW H 111 * MAKE WORD MARK * * LOAD TEXT CARD PAIRS INTO MEMORY, SETTING INDEX LIMIT AT END LOADTS SBR LOADTX&3 * SET RETURN ADDRESS NOP MCW L3V65,X3 * 65=>X3 * SET UP INDEX PUT AWAY MCW L3V000,TXLIM * SET UP LIMIT CS 80 * CLEAR CARD INPUT AREA SW 001 LOADC R * READ 1ST CARD OF PAIR C LMINUS,001 * HAS IT A LEADING - ? BE LOADTX * YES, EXIT C P3V130,TXLIM BE LOADC * 16,000 NEAR FULL, SKIP TIL - SIGN A L3V001,TXLIM * ADD 1 TO LINE COUNT MCW 065,TXTSTR&X3 * MOVE 65 CHAR OF CARD IMAGE TO STORE MA L3V65,X3 * INCREMENT PUT AWAY INDEX R * READ 2ND CARD OF PAIR C LMINUS,001 * HAS IT A LEADING - ? BE LOADTX * YES, EXIT MCW 065,TXTSTR&X3 * MOVE 65 CHAR OF CARD IMAGE TO STORE MA L3V65,X3 * INCREMENT PUT AWAY INDEX B LOADC LOADTX B 000 * RETURN FROM SUBROUTINE L3V65 DCW 065 LMINUS DCW @-@ * * * BIG PRINT SUBROUTINE BIGPRT SBR BIGPTX&3 * SET RETURN ADDRESS MCW L1V1,DOUBLE * MCW L3V000,PICKUP * INITIALIZE PICKUP MCW BLANKS,WORK * BLANK WORK AREA, FOR 1ST NAME MCW PICKUP,X1 * START SCAN MCW L3V000,X2 * START PUTAWAY BIGPTA MCW 1&X1,PCHAR * MOVE 1ST CHAR OF 1ST NAME MCW PCHAR,WORK-24&X2 * A ONE3,X1 A ONE3,X2 C L3V012,X2 * TOO MANY? BE BIGPTB * YES, PRINT C L1VBL,PCHAR * WAS IT BLANK BU BIGPTA BIGPTB MCW X1,PICKUP B PRINTS * MCW BLANKS,WORK * BLANK WORK AREA, FOR 2ND NAME MCW L1VBL,BIGLST * SHOW NO CHARS IN LAST NAME MCW PICKUP,X1 * START SCAN MCW L3V002,X2 * START PUTAWAY BIGPTC MCW 1&X1,PCHAR * MOVE 1ST CHAR OF LAST NAME MCW PCHAR,WORK-24&X2 * A ONE3,X1 C X1,L3VO79 * DON'T SCAN PAST END OF CARD BE BIGPTD * YES, TERMINATE C L1VBL,BIGLST * IF INTO LAST NAME, DON'T EAT MANY BLANKS BU BIGNET C L1VBL,PCHAR * BLANK BE BIGPTC * YES, EAT LEADING BLANKS BIGNET MCW PCHAR,BIGLST * A ONE3,X2 C L3V012,X2 * TOO MANY? BU BIGPTC BIGPTD MCW X1,PICKUP B PRINTS * PRINT LAST NAME BIGPTX B 000 * SUBROUTINE RETURN BIGLST DCW 1 * ------------------------------------------------------------- * * NOW WE PRINT THAT BABY OUT :-)) * PROPOSED FORMAT * 2 * 0 1 2 3 4 5 6 7 8 * 12345678901234567890123456789012345678901234567890123456789012345678901234567890 * PRINTS SBR PRINTX&3 * set return address MCW ZERO3,WROW * initialize print row counter PRINT1 MCW ZERO3,WCOL * initialize work character pick up MCW L3V000,PCOL * initialize output index CS 332 * clear printer area CS SW 201 PRINT2 MCW WCOL,X1 * prepare to pick up next character to be processed MCW WORK-24&X1,PCHAR * and get it A ONE3,WCOL * process character into INDX MCW L3V0BB,INDXLO * iniialize three char INDX C L1VCMA,PCHAR * is it a comma, low already zeroed BU PCXA * MCW L1V3,INDXMD B PC5 * done PCXA C L1VDOT,PCHAR * is it a period, low already zeroed BU PCXB * MCW L1V1,INDXMD B PC5 * done PCXB C L1VMIN,PCHAR * is it a bar, minus BU PCXC MCW L1V2,INDXMD B PC5 * done PCXC MN PCHAR,INDXLO * move numerical 8421 C PCHAR,ZERO1 * branch if PCHAR <> ZERO BU PC1 MCW L1V4,INDXMD * force index 40 MCW ZERO1,INDXLO B PC5 * zero processed PC1 C L1VZ,PCHAR * branch if PCHAR <= 0 BH PC5 C L1VS,PCHAR * branch if PCHAR < S BL PC2 A ONE1,INDXMD PC2 C L1VJ,PCHAR * branch if PCHAR < J BL PC3 A ONE1,INDXMD PC3 C L1VA,PCHAR * branch if PCHAR < A BL PC4 A ONE1,INDXMD PC4 C C L1VZ,PCHAR * branch if PCHAR in range BE PC5 BL PC5 MCW ZERO3,INDXLO * form blank MCW L1VBL,PCHAR * print blank PC5 NOP * dummy - START MPY BY 14 MCW INDXLO,WORK3 * times 1 A INDXLO,WORK3 * times 2 A INDXLO,WORK3 * times 3 A INDXLO,WORK3 * times 4 A INDXLO,WORK3 * times 5 A INDXLO,WORK3 * times 6 A INDXLO,WORK3 * times 7 A WORK3,WORK3 * times 14 MCW WORK3,INDXLO * back into position - tidy?? A WROW,INDXLO * make INDEX+(2*WROW) A WROW,INDXLO * make INDEX+(2*WROW) A TWO3,INDXLO * add element size * prepare to output MCW PCOL,X3 * output column MCW INDXLO,X1 * pickup proper mask MCW CODEA&X1,MASK2 * * --------------------------------- MCW L3V000,X2 * set up bit select index LOOP1 C BITSEL&X2,MASK2 * do compare BL L2 MCW PCHAR,WCHAR * yes, print special S BITSEL&X2,MASK2 * fix mask MN MASK2,NOZONE MCW NOZONE,MASK2 B L3 L2 MCW L1VBL,WCHAR L3 A L3V002,X2 * go to next bit MCW WCHAR,PRNTA&X3 * print proper character A L3V001,X3 C L1V0,DOUBLE *are we going double? BE L4 * no MCW WCHAR,PRNTA&X3 * print proper character A L3V001,X3 * L4 C L3V009,X2 BL LOOP1 A L3V001,X3 C L1V0,DOUBLE BE L5 A L3V001,X3 L5 MCW X3,PCOL *save column pointer C L3V132,X3 * BL PRINT2 * W *write the print area to the printer - SIMH blanks col 2? B TAPE C L1V0,DOUBLE *are we going double? BE L6 * no * W *write the print area to the printer COMMENTED OUT B TAPE L6 A ONE3,WROW * increment row counter C L3V007,WROW BL PRINT1 * do another row CS 332 * clear printer area CS SW 201 * W *write the print area to the printer - SIMH blanks col 2? B TAPE PRINTX B 0 *** RETURN TO CALL DCW 0 TAPE SBR RTN1&3 BSS SKIP,C C DOLSW,ONE1 * DOLLAR SWITCH IS ON BE SKIP C L1EQU,001 BE SKIP W SKIP BSS RTN1,B LGPM LCA GPMK,333 WT 1,1 RTN1 B 0 DCW 0 DODOL SBR RTN2&3 * SET DON'T PRINT SWITCH LCA ONE1,DOLSW * SET SWITCH TO 1 H * HALT FOR PRESENTOR RTN2 B 0 DCW 0 DOEQU SBR RTN3&3 * SET LONG TAPE RECORD SWITCH LCA LNOP,LGPM * PUT NOP IN SET GROUP MARK LOC H * HALT FOR PRESNETOR RTN3 B 0 DOQUES SBR RTN4&3 H * HALT AND THEN RETURN RTN4 B 0 * * START PRINT TEXT STUFF, 130 COL (65 X 2) UNTIL LIMIT - MUST HAVE ONE LINE PNTTXT SBR PNTTXX&3 * SET UP RETURN NOP MCW P3V130,X3 * SET UP INDEX FETCH MCW L3V000,X2 * INITIALIZE LINE COUNTER CS 332 * CLEAR TOP OF PRINT AREA SW 201 * ASSURE WORD MARK AT BEGIN PRINT AREA * TOP OF FORM HERE?? PNTCYC C X2,TXLIM BE PNTTXX MCW TXTSTR&X3,330 * MOVE 130 CHAR * W * WRITE TO PRINTER COMMENTED OUT B TAPE * MODIFICATION FOR TAPE MA P3V130,X3 * ADD LENGTH TO FETCH A L3V001,X2 * INCREMENT LINE COUNTER B PNTCYC * AND LOOP MORE PNTTXX B 000 * RETURN FROM SUBROUTINE P3V130 DCW 130 * * * * * GENERAL PARAMETER AREA DOUBLE DCW 0 * ZERO PRINTS SINGLE SIZE * * * * work areas for PRINTS DCW @WCOL:@ WCOL DCW 000 * pickup index from input area DCW @WROW:@ WROW DCW 000 DCW @PCHAR:@ PCHAR DCW 0 WCHAR DCW 0 DCW @INDX:@ INDXHI DCW 1 * fabricate the fancy index INDXMD DC 1 INDXLO DC 1 * INDX EQU INDXLO DCW @MASK2:@ MASK2 DCW @00@ * 2 character mask DCW @WORK3:@ WORK3 DCW 000 DCW @PCOL:@ PCOL DCW 000 DCW @ZERO3@ ZERO3 DCW 000 ZERO1 DCW 0 ONE3 DCW 001 ONE1 DCW 1 TWO3 DCW 002 FIVE3 DCW 005 TWO4S2 DCW 16 TWO3S2 DCW 08 TWO2S2 DCW 04 TWO1S2 DCW 02 ONE2 DCW 01 NOZONE DCW 0 L1V1 DCW @1@ L3V000 DCW @000@ L3V012 DCW @012@ L1VBL DCW @ @ L3V002 DCW @002@ L1V0 DCW @0@ L3V0BB DCW @0 @ L1VCMA DCw @,@ L1V3 DCW @3@ L1VDOT DCW @.@ L1VMIN DCW @-@ L1DOL DCW @$@ L1EQU DCW @=@ L1V2 DCW @2@ L1V4 DCW @4@ L1VZ DCW @Z@ L1VS DCW @S@ L1VJ DCW @J@ L1VA DCW @A@ L3V001 DCW @001@ L3V009 DCW @009@ L3V132 DCW @132@ L3V007 DCW @007@ L3VO79 DCW @079@ DOLSW DCW 0 LNOP DCW @N@ LQUES DCW @?@ BITSEL DCW 16 DCW 08 DCW 04 DCW 02 DCW 01 DCW 00 * * * NEW VARIABLES TXLIM DCW @000@ * TEXT INDEX LIMIT * 1234567890123456789012345 DATE25 DCW @0000000000000000000000000@ * SAVE DATE 25 LONG * * * * WORKING AREAS * ORG 1750 * 1234567890123456789012345678 WORKA DS 0 DS 0 WORK DCW @0000000000000000000000000@ * WORK AREA FOR STRING 25 LONG * * Ron Mak says that blanks process as zeros * * 0 1 2 3 4 * 1234567890123456789012345678901234567890 BLANKS DCW @ @ * SET WORK TO BLANKS LINE3 DCW @VISITED THE COMPUTER @ LINE4 DCW @ HISTORY MUSEUM @ * BCD collating sequence A .lt. Z .lt. 0 .lt. 9 .lt. B * MASK IS 14 CHR BA8421 CODEA DS 0 DC @00000000000000@ DC @04120404040414@ DC @14170102030431@ DC @31020402010114@ DC @02061018310202@ DC @31163001011714@ DC @06081630171714@ DC @31010204080808@ DC @14171714171714@ DC @14171715010212@ DC @00000000001212@ DC @14171717311717@ DC @30171730171730@ DC @14171616161714@ DC @24181717171824@ DC @31161630161631@ DC @31161630161616@ DC @14171623171715@ DC @17171731171717@ DC @14040404040414@ DC @00000031000000@ DC @07020202021812@ DC @17182224221817@ DC @16161616161631@ DC @17272121171717@ DC @17172521191717@ DC @14171717171714@ DC @30171730161616@ DC @14171717212213@ DC @30171730201817@ DC @00000000120408@ DC @00010203041600@ DC @15161614010130@ DC @31040404040404@ DC @17171717171714@ DC @17171717171004@ DC @17171721212110@ DC @17171004101717@ DC @17171710040404@ DC @31010204081631@ DC @14171921251714@ DCW @123456789012345678901234567890@ ORG 2700 GPMK DCW @"@ * GROUP MARK TXTSTR DCW @0@ END START2 * NEW LAST CARD IN DECK, TRANSFER ADDRESS
Listing
CLEAR STORAGE 1 ,008015,022026,030037,044,049,053053N000000N00001026 1 CLEAR STORAGE 2 L068116,105106,110117B101/I9I#071029C029056B026/B001/0991,001/001117I0? 2 BOOTSTRAP ,008015,022029,036040,047054,061068,072/061039 ,0010011040 3 0 PAGE 1 0 SEQ PG LIN LABEL OP OPERANDS SFX CT LOCN INSTRUCTION TYPE CARD 101 * BIGPRINT/TAPE 102 * PROGRAM BY ED THELEN 103 * MODIFIED BY DAN MCINNIS APRIL 1,2008 104 * ADDED SENSE SWITCH CONTROLS AND CONTROL CARDS 105 * SS B OFF - WRITE TO TAPE ON - SKIP TAPE WRITING 106 * SS C OFF - PRINT ON - SKIP PRINTING 107 * SS D OFF - PUNCH ON - SKIP PUNCHING 108 * SS E OFF - SS NAME CARDS ON - DON'T SS NAME CARDS 109 * CONTROL CARD - COL 1 END OF BLURB CARDS OR 110 * END OF NAME CARDS GO TO PROGRAM END 111 * CONTROL CARD $ HALT AND THEN STOP PRINTING AND PUNCHING 112 * CONTROL CARD ? HALT PRESS RUN TO RESTART 113 * CONTROL CARD = HALT AND THEN CHANGE TO LONG TAPE RECORDS 114 INBUF DS 1 0333 115 * 116 ORG 87 0087 117 X1 DSA 0 * INDEX REGISTER 1 3 0089 000 4 118 ORG 92 0092 119 X2 DSA 0 * INDEX REGISTER 2 3 0094 000 5 120 ORG 97 0097 121 X3 DSA 0 * INDEX REGISTER 3 3 0099 000 6 122 * 123 ORG 201 * START PRINT OUTPUT AREA 0201 124 PRNTA DC 1 1 0201 7 125 PRNTA1 DC 1 1 0202 7 126 PRNTA2 DC 1 1 0203 7 127 PRNTA3 DC 1 1 0204 7 128 PRNTA4 DC 1 1 0205 7 129 * 130 * ------------------------------------------------------------- 131 ORG 335 * START ORIGINAL PROGRAM AREA 0335 132 PICKUP DCW 000 3 0337 8 133 START2 CS 80 * CLEAR WORD MARKS FROM CARD READ 4 0338 / 080 8 134 H * HALT TO CHECK PAPER AND TAPE 1 0342 . 8 135 SW 001 * SET WORD MARK 4 0343 , 001 8 136 B LOADTS * CALL SUB TO READ TEXT UNTIL - 4 0347 B 534 8 137 R * READ DATE CARD 1 0351 1 8 138 MCW 25,DATE25 * PUT IT IN A SAFE PLACE 7 0352 M 025 Y17 8 139 RDGEST BSS SKIPC1,C * IF C SWITCH ON SKIP PAPER SKIP 5 0359 B 366 C 9 140 CC 1 * TOP OF FORM 2 0364 F 1 9 141 SKIPC1 R * READ GUEST CARD 1 0366 1 9 142 BSS SKST,E * SKIP STACKER SELECT 5 0367 B 374 E 9 143 SS 1 * GUEST CARD IN STACKER 1 2 0372 K 1 9 144 SKST C LMINUS,001 * IS FIRST COL MINUS? 7 0374 C 645 001 9 145 BE NEND * YES, STOP 5 0381 B 511 S 9 146 C LQUES,001 7 0386 C X77 001 10 147 BE DOQUES 5 0393 B V61 S 10 1 PAGE 2 0 SEQ PG LIN LABEL OP OPERANDS SFX CT LOCN INSTRUCTION TYPE CARD 148 C L1DOL,001 * IS IT A DOLLAR CARD 7 0398 C X52 001 10 149 BE DODOL * GO SET DODOL SWITCH 5 0405 B V28 S 10 150 C L1EQU,001 * IS IT EQUAL CARD 7 0410 C X53 001 10 151 BE DOEQU * GO SET EQU SWITCH 5 0417 B V45 S 10 152 BSS NEND,A * TEST FOR LAST CARD 5 0422 B 511 A 11 153 C DOLSW,ONE1 * IS DOLLAR SWITCH ON 7 0427 C X75 X15 11 154 BE SKIPPU * SKIP PUNCH 5 0434 B 452 S 11 155 BSS SKIPPU,D * SKIP PUNCHING 5 0439 B 452 D 11 156 LCA 080,180 * 7 0444 L 080 180 11 157 P * PUNCH GUEST CARD 1 0451 4 11 158 * NEW TOP OF FORM 159 * GUEST CARD IMAGE IN CARD READ AREA 160 SKIPPU B BIGPRT * CALL SUB TO PROCESS GUEST CARD & VIS 4 0452 B 646 11 161 * DOUBLE SIZE CONTROL IS RETURNED AS ZERO O 162 * 163 MCW L1V0,DOUBLE * SET FOR SINGLE SIZE BIG PRINT 7 0456 M X44 W45 12 164 MCW DATE25,WORK * PRINT DATE LINE 7 0463 M Y17 Y42 12 165 B PRINTS 4 0470 B 875 12 166 MCW LINE3,WORK 7 0474 M Y92 Y42 12 167 B PRINTS 4 0481 B 875 12 168 MCW LINE4,WORK 7 0485 M Z17 Y42 12 169 B PRINTS 4 0492 B 875 13 170 BSS SKIPC2,C * SKIP PAPER TOP OF FORM IF SENSE SWIT 5 0496 B 503 C 13 171 CC 1 * TOP OF FORM 2 0501 F 1 13 172 SKIPC2 B PNTTXT * PRINT TEXT DATA FROM MEMORY 4 0503 B V70 13 173 B RDGEST * AND GOTO NEXT GUEST CARD 4 0507 B 359 13 174 * 175 NEND SS 1 2 0511 K 1 13 176 BSS SKIPC3,C * SKIP TOP OF FORM IF SS C ON 5 0513 B 520 C 13 177 CC 1 * TOP OF FORM 2 0518 F 1 14 178 SKIPC3 BSS NOREW,B * IF NOT SSB REWIND TAPE 5 0520 B 530 B 14 179 RWD 1 * REWIND TAPE - HOPEFULLY HSPEED 5 0525 U %U1 R 14 180 NOREW H 111 * MAKE WORD MARK 4 0530 . 111 14 181 * 182 * LOAD TEXT CARD PAIRS INTO MEMORY, SETTING INDEX LIMIT AT END 183 LOADTS SBR LOADTX&3 * SET RETURN ADDRESS 4 0534 H 641 14 184 NOP 1 0538 N 14 185 MCW L3V65,X3 * 65=>X3 * SET UP INDEX PUT AWAY 7 0539 M 644 099 14 186 MCW L3V000,TXLIM * SET UP LIMIT 7 0546 M X36 X92 15 187 CS 80 * CLEAR CARD INPUT AREA 4 0553 / 080 15 188 SW 001 4 0557 , 001 15 189 LOADC R * READ 1ST CARD OF PAIR 1 0561 1 15 190 C LMINUS,001 * HAS IT A LEADING - ? 7 0562 C 645 001 15 191 BE LOADTX * YES, EXIT 5 0569 B 638 S 15 192 C P3V130,TXLIM 7 0574 C W44 X92 15 193 BE LOADC * 16,000 NEAR FULL, SKIP TIL - SIGN 5 0581 B 561 S 16 194 A L3V001,TXLIM * ADD 1 TO LINE COUNT 7 0586 A X62 X92 16 195 MCW 065,TXTSTR&X3 * MOVE 65 CHAR OF CARD IMAGE TO STORE 7 0593 M 065 P?1 16 196 MA L3V65,X3 * INCREMENT PUT AWAY INDEX 7 0600 # 644 099 16 197 R * READ 2ND CARD OF PAIR 1 0607 1 16 1 PAGE 3 0 SEQ PG LIN LABEL OP OPERANDS SFX CT LOCN INSTRUCTION TYPE CARD 198 C LMINUS,001 * HAS IT A LEADING - ? 7 0608 C 645 001 16 199 BE LOADTX * YES, EXIT 5 0615 B 638 S 16 200 MCW 065,TXTSTR&X3 * MOVE 65 CHAR OF CARD IMAGE TO STORE 7 0620 M 065 P?1 17 201 MA L3V65,X3 * INCREMENT PUT AWAY INDEX 7 0627 # 644 099 17 202 B LOADC 4 0634 B 561 17 203 LOADTX B 000 * RETURN FROM SUBROUTINE 4 0638 B 000 17 204 L3V65 DCW 065 3 0644 17 205 LMINUS DCW @-@ 1 0645 17 206 * 207 * 208 * BIG PRINT SUBROUTINE 209 BIGPRT SBR BIGPTX&3 * SET RETURN ADDRESS 4 0646 H 873 17 210 MCW L1V1,DOUBLE * 7 0650 M X33 W45 18 211 MCW L3V000,PICKUP * INITIALIZE PICKUP 7 0657 M X36 337 18 212 MCW BLANKS,WORK * BLANK WORK AREA, FOR 1ST NAME 7 0664 M Y67 Y42 18 213 MCW PICKUP,X1 * START SCAN 7 0671 M 337 089 18 214 MCW L3V000,X2 * START PUTAWAY 7 0678 M X36 094 18 215 BIGPTA MCW 1&X1,PCHAR * MOVE 1ST CHAR OF 1ST NAME 7 0685 M 0'1 W68 19 216 MCW PCHAR,WORK-24&X2 * 7 0692 M W68 YJ8 19 217 A ONE3,X1 7 0699 A X14 089 19 218 A ONE3,X2 7 0706 A X14 094 19 219 C L3V012,X2 * TOO MANY? 7 0713 C X39 094 19 220 BE BIGPTB * YES, PRINT 5 0720 B 737 S 20 221 C L1VBL,PCHAR * WAS IT BLANK 7 0725 C X40 W68 20 222 BU BIGPTA 5 0732 B 685 / 20 223 BIGPTB MCW X1,PICKUP 7 0737 M 089 337 20 224 B PRINTS 4 0744 B 875 20 225 * 226 MCW BLANKS,WORK * BLANK WORK AREA, FOR 2ND NAME 7 0748 M Y67 Y42 20 227 MCW L1VBL,BIGLST * SHOW NO CHARS IN LAST NAME 7 0755 M X40 874 21 228 MCW PICKUP,X1 * START SCAN 7 0762 M 337 089 21 229 MCW L3V002,X2 * START PUTAWAY 7 0769 M X43 094 21 230 BIGPTC MCW 1&X1,PCHAR * MOVE 1ST CHAR OF LAST NAME 7 0776 M 0'1 W68 21 231 MCW PCHAR,WORK-24&X2 * 7 0783 M W68 YJ8 21 232 A ONE3,X1 7 0790 A X14 089 22 233 C X1,L3VO79 * DON'T SCAN PAST END OF CARD 7 0797 C 089 X74 22 234 BE BIGPTD * YES, TERMINATE 5 0804 B 859 S 22 235 C L1VBL,BIGLST * IF INTO LAST NAME, DON'T EAT MANY BLA 7 0809 C X40 874 22 236 BU BIGNET 5 0816 B 833 / 22 237 C L1VBL,PCHAR * BLANK 7 0821 C X40 W68 22 238 BE BIGPTC * YES, EAT LEADING BLANKS 5 0828 B 776 S 23 239 BIGNET MCW PCHAR,BIGLST * 7 0833 M W68 874 23 240 A ONE3,X2 7 0840 A X14 094 23 241 C L3V012,X2 * TOO MANY? 7 0847 C X39 094 23 242 BU BIGPTC 5 0854 B 776 / 23 243 BIGPTD MCW X1,PICKUP 7 0859 M 089 337 23 244 B PRINTS * PRINT LAST NAME 4 0866 B 875 24 245 BIGPTX B 000 * SUBROUTINE RETURN 4 0870 B 000 24 246 BIGLST DCW 1 1 0874 24 247 * ------------------------------------------------------------- 1 PAGE 4 0 SEQ PG LIN LABEL OP OPERANDS SFX CT LOCN INSTRUCTION TYPE CARD 248 * 249 * NOW WE PRINT THAT BABY OUT :-)) 250 * PROPOSED FORMAT 251 * 2 252 * 0 1 2 3 4 5 6 7 253 * 1234567890123456789012345678901234567890123456789012345678901234567890123 254 * 255 PRINTS SBR PRINTX&3 * SET RETURN ADDRESS 4 0875 H U67 24 256 MCW ZERO3,WROW * INITIALIZE PRINT ROW COUNTER 7 0879 M X10 W61 24 257 PRINT1 MCW ZERO3,WCOL * INITIALIZE WORK CHARACTER PICK UP 7 0886 M X10 W53 24 258 MCW L3V000,PCOL * INITIALIZE OUTPUT INDEX 7 0893 M X36 X02 24 259 CS 332 * CLEAR PRINTER AREA 4 0900 / 332 25 260 CS 1 0904 / 25 261 SW 201 4 0905 , 201 25 262 PRINT2 MCW WCOL,X1 * PREPARE TO PICK UP NEXT CHARACTER TO BE PR 7 0909 M W53 089 25 263 MCW WORK-24&X1,PCHAR * AND GET IT 7 0916 M Y/8 W68 25 264 A ONE3,WCOL 7 0923 A X14 W53 25 265 * PROCESS CHARACTER INTO INDX 266 MCW L3V0BB,INDXLO * INIIALIZE THREE CHAR INDX 7 0930 M X47 W77 25 267 C L1VCMA,PCHAR * IS IT A COMMA, LOW ALREADY ZEROED 7 0937 C X48 W68 26 268 BU PCXA * 5 0944 B 960 / 26 269 MCW L1V3,INDXMD 7 0949 M X49 W76 26 270 B PC5 * DONE 4 0956 B /44 26 271 PCXA C L1VDOT,PCHAR * IS IT A PERIOD, LOW ALREADY ZEROE 7 0960 C X50 W68 26 272 BU PCXB * 5 0967 B 983 / 26 273 MCW L1V1,INDXMD 7 0972 M X33 W76 27 274 B PC5 * DONE 4 0979 B /44 27 275 PCXB C L1VMIN,PCHAR * IS IT A BAR, MINUS 7 0983 C X51 W68 27 276 BU PCXC 5 0990 B '06 / 27 277 MCW L1V2,INDXMD 7 0995 M X54 W76 27 278 B PC5 * DONE 4 1002 B /44 27 279 PCXC MN PCHAR,INDXLO * MOVE NUMERICAL 8421 7 1006 D W68 W77 28 280 C PCHAR,ZERO1 * BRANCH IF PCHAR <> ZERO 7 1013 C W68 X11 28 281 BU PC1 5 1020 B '43 / 28 282 MCW L1V4,INDXMD * FORCE INDEX 40 7 1025 M X55 W76 28 283 MCW ZERO1,INDXLO 7 1032 M X11 W77 28 284 B PC5 * ZERO PROCESSED 4 1039 B /44 28 285 PC1 C L1VZ,PCHAR * BRANCH IF PCHAR <= 0 7 1043 C X56 W68 29 286 BH PC5 5 1050 B /44 U 29 287 C L1VS,PCHAR * BRANCH IF PCHAR < S 7 1055 C X57 W68 29 288 BL PC2 5 1062 B '74 T 29 289 A ONE1,INDXMD 7 1067 A X15 W76 29 290 PC2 C L1VJ,PCHAR * BRANCH IF PCHAR < J 7 1074 C X58 W68 29 291 BL PC3 5 1081 B '93 T 30 292 A ONE1,INDXMD 7 1086 A X15 W76 30 293 PC3 C L1VA,PCHAR * BRANCH IF PCHAR < A 7 1093 C X59 W68 30 294 BL PC4 5 1100 B /12 T 30 295 A ONE1,INDXMD 7 1105 A X15 W76 30 296 PC4 C 1 1112 C 30 297 C L1VZ,PCHAR * BRANCH IF PCHAR IN RANGE 7 1113 C X56 W68 30 1 PAGE 5 0 SEQ PG LIN LABEL OP OPERANDS SFX CT LOCN INSTRUCTION TYPE CARD 298 BE PC5 5 1120 B /44 S 31 299 BL PC5 5 1125 B /44 T 31 300 MCW ZERO3,INDXLO * FORM BLANK 7 1130 M X10 W77 31 301 MCW L1VBL,PCHAR * PRINT BLANK 7 1137 M X40 W68 31 302 PC5 NOP * DUMMY - START MPY BY 14 1 1144 N 31 303 MCW INDXLO,WORK3 * TIMES 1 7 1145 M W77 W94 31 304 A INDXLO,WORK3 * TIMES 2 7 1152 A W77 W94 31 305 A INDXLO,WORK3 * TIMES 3 7 1159 A W77 W94 32 306 A INDXLO,WORK3 * TIMES 4 7 1166 A W77 W94 32 307 A INDXLO,WORK3 * TIMES 5 7 1173 A W77 W94 32 308 A INDXLO,WORK3 * TIMES 6 7 1180 A W77 W94 32 309 A INDXLO,WORK3 * TIMES 7 7 1187 A W77 W94 32 310 A WORK3,WORK3 * TIMES 14 7 1194 A W94 W94 33 311 MCW WORK3,INDXLO * BACK INTO POSITION - TIDY?? 7 1201 M W94 W77 33 312 A WROW,INDXLO * MAKE INDEX+(2*WROW) 7 1208 A W61 W77 33 313 A WROW,INDXLO * MAKE INDEX+(2*WROW) 7 1215 A W61 W77 33 314 A TWO3,INDXLO * ADD ELEMENT SIZE 7 1222 A X18 W77 33 315 * PREPARE TO OUTPUT 316 MCW PCOL,X3 * OUTPUT COLUMN 7 1229 M X02 099 34 317 MCW INDXLO,X1 * PICKUP PROPER MASK 7 1236 M W77 089 34 318 MCW CODEA&X1,MASK2 * 7 1243 M Z/7 W85 34 319 * --------------------------------- 320 MCW L3V000,X2 * SET UP BIT SELECT INDEX 7 1250 M X36 094 34 321 LOOP1 C BITSEL&X2,MASK2 * DO COMPARE 7 1257 C XP9 W85 34 322 BL L2 5 1264 B T01 T 35 323 MCW PCHAR,WCHAR * YES, PRINT SPECIAL 7 1269 M W68 W69 35 324 S BITSEL&X2,MASK2 * FIX MASK 7 1276 S XP9 W85 35 325 MN MASK2,NOZONE 7 1283 D W85 X32 35 326 MCW NOZONE,MASK2 7 1290 M X32 W85 35 327 B L3 4 1297 B T08 35 328 L2 MCW L1VBL,WCHAR 7 1301 M X40 W69 36 329 L3 A L3V002,X2 * GO TO NEXT BIT 7 1308 A X43 094 36 330 MCW WCHAR,PRNTA&X3 * PRINT PROPER CHARACTER 7 1315 M W69 2?1 36 331 A L3V001,X3 7 1322 A X62 099 36 332 C L1V0,DOUBLE *ARE WE GOING DOUBLE? 7 1329 C X44 W45 36 333 BE L4 * NO 5 1336 B T55 S 37 334 MCW WCHAR,PRNTA&X3 * PRINT PROPER CHARACTER 7 1341 M W69 2?1 37 335 A L3V001,X3 * 7 1348 A X62 099 37 336 L4 C L3V009,X2 7 1355 C X65 094 37 337 BL LOOP1 5 1362 B S57 T 37 338 A L3V001,X3 7 1367 A X62 099 37 339 C L1V0,DOUBLE 7 1374 C X44 W45 38 340 BE L5 5 1381 B T93 S 38 341 A L3V001,X3 7 1386 A X62 099 38 342 L5 MCW X3,PCOL *SAVE COLUMN POINTER 7 1393 M 099 X02 38 343 C L3V132,X3 * 7 1400 C X68 099 38 344 BL PRINT2 5 1407 B 909 T 38 345 * W *WRITE THE PRINT AREA TO THE PRINTER - SIMH 346 B TAPE 4 1412 B U69 39 347 C L1V0,DOUBLE *ARE WE GOING DOUBLE? 7 1416 C X44 W45 39 1 PAGE 6 0 SEQ PG LIN LABEL OP OPERANDS SFX CT LOCN INSTRUCTION TYPE CARD 348 BE L6 * NO 5 1423 B U32 S 39 349 * W *WRITE THE PRINT AREA TO THE PRINTER COMMENT 350 B TAPE 4 1428 B U69 39 351 L6 A ONE3,WROW * INCREMENT ROW COUNTER 7 1432 A X14 W61 39 352 C L3V007,WROW 7 1439 C X71 W61 39 353 BL PRINT1 * DO ANOTHER ROW 5 1446 B 886 T 39 354 CS 332 * CLEAR PRINTER AREA 4 1451 / 332 40 355 CS 1 1455 / 40 356 SW 201 4 1456 , 201 40 357 * W *WRITE THE PRINT AREA TO THE PRINTER - SIMH BLANKS CO 358 B TAPE 4 1460 B U69 40 359 PRINTX B 0 *** RETURN TO CALL 4 1464 B 000 40 360 DCW 0 1 1468 40 361 TAPE SBR RTN1&3 4 1469 H V26 40 362 BSS SKIP,C 5 1473 B V03 C 41 363 C DOLSW,ONE1 * DOLLAR SWITCH IS ON 7 1478 C X75 X15 41 364 BE SKIP 5 1485 B V03 S 41 365 C L1EQU,001 7 1490 C X53 001 41 366 BE SKIP 5 1497 B V03 S 41 367 W 1 1502 2 41 368 SKIP BSS RTN1,B 5 1503 B V23 B 41 369 LGPM LCA GPMK,333 7 1508 L P00 333 42 370 WT 1,1 8 1515 M %U1 001 W 42 371 RTN1 B 0 4 1523 B 000 42 372 DCW 0 1 1527 42 373 DODOL SBR RTN2&3 * SET DON'T PRINT SWITCH 4 1528 H V43 42 374 LCA ONE1,DOLSW * SET SWITCH TO 1 7 1532 L X15 X75 42 375 H * HALT FOR PRESENTOR 1 1539 . 42 376 RTN2 B 0 4 1540 B 000 43 377 DCW 0 1 1544 43 378 DOEQU SBR RTN3&3 * SET LONG TAPE RECORD SWITCH 4 1545 H V60 43 379 LCA LNOP,LGPM * PUT NOP IN SET GROUP MARK LOC 7 1549 L X76 V08 43 380 H * HALT FOR PRESNETOR 1 1556 . 43 381 RTN3 B 0 4 1557 B 000 43 382 DOQUES SBR RTN4&3 4 1561 H V69 43 383 H * HALT AND THEN RETURN 1 1565 . 44 384 RTN4 B 0 4 1566 B 000 44 385 * 386 * START PRINT TEXT STUFF, 130 COL (65 X 2) UNTIL LIMIT - MUST HAVE ONE L 387 PNTTXT SBR PNTTXX&3 * SET UP RETURN 4 1570 H W41 44 388 NOP 1 1574 N 44 389 MCW P3V130,X3 * SET UP INDEX FETCH 7 1575 M W44 099 44 390 MCW L3V000,X2 * INITIALIZE LINE COUNTER 7 1582 M X36 094 44 391 CS 332 * CLEAR TOP OF PRINT AREA 4 1589 / 332 44 392 SW 201 * ASSURE WORD MARK AT BEGIN PRINT AR 4 1593 , 201 45 393 * TOP OF FORM HERE?? 394 PNTCYC C X2,TXLIM 7 1597 C 094 X92 45 395 BE PNTTXX 5 1604 B W38 S 45 396 MCW TXTSTR&X3,330 * MOVE 130 CHAR 7 1609 M P?1 330 45 397 * W * WRITE TO PRINTER COMMENTED OUT 1 PAGE 7 0 SEQ PG LIN LABEL OP OPERANDS SFX CT LOCN INSTRUCTION TYPE CARD 398 B TAPE * MODIFICATION FOR TAPE 4 1616 B U69 45 399 MA P3V130,X3 * ADD LENGTH TO FETCH 7 1620 # W44 099 45 400 A L3V001,X2 * INCREMENT LINE COUNTER 7 1627 A X62 094 46 401 B PNTCYC * AND LOOP MORE 4 1634 B V97 46 402 PNTTXX B 000 * RETURN FROM SUBROUTINE 4 1638 B 000 46 403 P3V130 DCW 130 3 1644 46 404 * 405 * 406 * 407 * 408 * GENERAL PARAMETER AREA 409 DOUBLE DCW 0 * ZERO PRINTS SINGLE SIZE 1 1645 46 410 * 411 * 412 * 413 * WORK AREAS FOR PRINTS 414 DCW @WCOL:@ 5 1650 46 415 WCOL DCW 000 * PICKUP INDEX FROM INPUT AREA 3 1653 46 416 DCW @WROW:@ 5 1658 47 417 WROW DCW 000 3 1661 47 418 DCW @PCHAR:@ 6 1667 47 419 PCHAR DCW 0 1 1668 47 420 WCHAR DCW 0 1 1669 47 421 DCW @INDX:@ 5 1674 47 422 INDXHI DCW 1 * FABRICATE THE FANCY INDEX 1 1675 47 423 INDXMD DC 1 1 1676 47 424 INDXLO DC 1 1 1677 47 425 * INDX EQU INDXLO 426 DCW @MASK2:@ 6 1683 48 427 MASK2 DCW @00@ * 2 CHARACTER MASK 2 1685 48 428 DCW @WORK3:@ 6 1691 48 429 WORK3 DCW 000 3 1694 48 430 DCW @PCOL:@ 5 1699 48 431 PCOL DCW 000 3 1702 48 432 DCW @ZERO3@ 5 1707 48 433 ZERO3 DCW 000 3 1710 49 434 ZERO1 DCW 0 1 1711 49 435 ONE3 DCW 001 3 1714 49 436 ONE1 DCW 1 1 1715 49 437 TWO3 DCW 002 3 1718 49 438 FIVE3 DCW 005 3 1721 49 439 TWO4S2 DCW 16 2 1723 49 440 TWO3S2 DCW 08 2 1725 50 441 TWO2S2 DCW 04 2 1727 50 442 TWO1S2 DCW 02 2 1729 50 443 ONE2 DCW 01 2 1731 50 444 NOZONE DCW 0 1 1732 50 445 L1V1 DCW @1@ 1 1733 50 446 L3V000 DCW @000@ 3 1736 50 447 L3V012 DCW @012@ 3 1739 51 1 PAGE 8 0 SEQ PG LIN LABEL OP OPERANDS SFX CT LOCN INSTRUCTION TYPE CARD 448 L1VBL DCW @ @ 1 1740 51 449 L3V002 DCW @002@ 3 1743 51 450 L1V0 DCW @0@ 1 1744 51 451 L3V0BB DCW @0 @ 3 1747 51 452 L1VCMA DCW @,@ 1 1748 51 453 L1V3 DCW @3@ 1 1749 51 454 L1VDOT DCW @.@ 1 1750 52 455 L1VMIN DCW @-@ 1 1751 52 456 L1DOL DCW @$@ 1 1752 52 457 L1EQU DCW @=@ 1 1753 52 458 L1V2 DCW @2@ 1 1754 52 459 L1V4 DCW @4@ 1 1755 52 460 L1VZ DCW @Z@ 1 1756 52 461 L1VS DCW @S@ 1 1757 53 462 L1VJ DCW @J@ 1 1758 53 463 L1VA DCW @A@ 1 1759 53 464 L3V001 DCW @001@ 3 1762 53 465 L3V009 DCW @009@ 3 1765 53 466 L3V132 DCW @132@ 3 1768 53 467 L3V007 DCW @007@ 3 1771 53 468 L3VO79 DCW @079@ 3 1774 54 469 DOLSW DCW 0 1 1775 54 470 LNOP DCW @N@ 1 1776 54 471 LQUES DCW @?@ 1 1777 54 472 BITSEL DCW 16 2 1779 54 473 DCW 08 2 1781 54 474 DCW 04 2 1783 54 475 DCW 02 2 1785 55 476 DCW 01 2 1787 55 477 DCW 00 2 1789 55 478 * 479 * 480 * NEW VARIABLES 481 TXLIM DCW @000@ * TEXT INDEX LIMIT 3 1792 55 482 * 1234567890123456789012345 483 DATE25 DCW @0000000000000000000000000@ * SAVE DATE 25 LONG 25 1817 55 484 * 485 * 486 * 487 * WORKING AREAS 488 * ORG 1750 489 * 1234567890123456789012345678 490 WORKA DS 0 1817 491 DS 0 1817 492 WORK DCW @0000000000000000000000000@ * WORK AREA FOR STRING 25 1842 56 493 * 494 * RON MAK SAYS THAT BLANKS PROCESS AS ZEROS 495 * 496 * 0 1 2 3 4 497 * 1234567890123456789012345678901234567890 1 PAGE 9 0 SEQ PG LIN LABEL OP OPERANDS SFX CT LOCN INSTRUCTION TYPE CARD 498 BLANKS DCW @ @ * SET WORK TO BLANKS 25 1867 57 499 LINE3 DCW @VISITED THE COMPUTER @ 25 1892 58 500 LINE4 DCW @ HISTORY MUSEUM @ 25 1917 59 501 * BCD COLLATING SEQUENCE A .lt. Z .lt. 0 .lt. 9 B 502 * MASK IS 14 CHR BA8421 503 CODEA DS 0 1917 504 DC @00000000000000@ 14 1931 59 505 DC @04120404040414@ 14 1945 60 506 DC @14170102030431@ 14 1959 60 507 DC @31020402010114@ 14 1973 61 508 DC @02061018310202@ 14 1987 61 509 DC @31163001011714@ 14 2001 62 510 DC @06081630171714@ 14 2015 62 511 DC @31010204080808@ 14 2029 63 512 DC @14171714171714@ 14 2043 63 513 DC @14171715010212@ 14 2057 64 514 DC @00000000001212@ 14 2071 64 515 DC @14171717311717@ 14 2085 65 516 DC @30171730171730@ 14 2099 65 517 DC @14171616161714@ 14 2113 66 518 DC @24181717171824@ 14 2127 66 519 DC @31161630161631@ 14 2141 67 520 DC @31161630161616@ 14 2155 67 521 DC @14171623171715@ 14 2169 68 522 DC @17171731171717@ 14 2183 68 523 DC @14040404040414@ 14 2197 69 524 DC @00000031000000@ 14 2211 69 525 DC @07020202021812@ 14 2225 70 526 DC @17182224221817@ 14 2239 70 527 DC @16161616161631@ 14 2253 71 528 DC @17272121171717@ 14 2267 71 529 DC @17172521191717@ 14 2281 72 530 DC @14171717171714@ 14 2295 72 531 DC @30171730161616@ 14 2309 73 532 DC @14171717212213@ 14 2323 73 533 DC @30171730201817@ 14 2337 74 534 DC @00000000120408@ 14 2351 74 535 DC @00010203041600@ 14 2365 75 536 DC @15161614010130@ 14 2379 75 537 DC @31040404040404@ 14 2393 76 538 DC @17171717171714@ 14 2407 76 539 DC @17171717171004@ 14 2421 77 540 DC @17171721212110@ 14 2435 77 541 DC @17171004101717@ 14 2449 78 542 DC @17171710040404@ 14 2463 78 543 DC @31010204081631@ 14 2477 79 544 DC @14171921251714@ 14 2491 79 545 DCW @123456789012345678901234567890@ 30 2521 80 546 ORG 2700 2700 547 GPMK DCW @"@ * GROUP MARK 1 2700 GMARK 81 1 PAGE 10 0 SEQ PG LIN LABEL OP OPERANDS SFX CT LOCN INSTRUCTION TYPE CARD 548 TXTSTR DCW @0@ 1 2701 81 549 END START2 * NEW LAST CARD IN DECK, TRANSFER ADDRESS / 338 080 1 PAGE 11 0SYMBOL ADDRESS SYMBOL ADDRESS SYMBOL ADDRESS SYMBOL ADDRESS SYMBOL ADDRESS SYMBOL ADDRESS SYMBOL ADDRESS BIGLST 874 BIGNET 833 BIGPRT 646 BIGPTA 685 BIGPTB 737 BIGPTC 776 BIGPTD 859 BIGPTX 870 BITSEL 1779 BLANKS 1867 CODEA 1917 DATE25 1817 DODOL 1528 DOEQU 1545 DOLSW 1775 DOQUES 1561 DOUBLE 1645 FIVE3 1721 GPMK 2700 INBUF 333 INDXHI 1675 INDXLO 1677 INDXMD 1676 L1DOL 1752 L1EQU 1753 L1V0 1744 L1V1 1733 L1V2 1754 L1V3 1749 L1V4 1755 L1VA 1759 L1VBL 1740 L1VCMA 1748 L1VDOT 1750 L1VJ 1758 L1VMIN 1751 L1VS 1757 L1VZ 1756 L2 1301 L3 1308 L3V000 1736 L3V001 1762 L3V002 1743 L3V007 1771 L3V009 1765 L3V012 1739 L3V0BB 1747 L3V132 1768 L3V65 644 L3VO79 1774 L4 1355 L5 1393 L6 1432 LGPM 1508 LINE3 1892 LINE4 1917 LMINUS 645 LNOP 1776 LOADC 561 LOADTS 534 LOADTX 638 LOOP1 1257 LQUES 1777 MASK2 1685 NEND 511 NOREW 530 NOZONE 1732 ONE1 1715 ONE2 1731 ONE3 1714 P3V130 1644 PC1 1043 PC2 1074 PC3 1093 PC4 1112 PC5 1144 PCHAR 1668 PCOL 1702 PCXA 960 PCXB 983 PCXC 1006 PICKUP 337 PNTCYC 1597 PNTTXT 1570 PNTTXX 1638 PRINT1 886 PRINT2 909 PRINTS 875 PRINTX 1464 PRNTA 201 PRNTA1 202 PRNTA2 203 PRNTA3 204 PRNTA4 205 RDGEST 359 RTN1 1523 RTN2 1540 RTN3 1557 RTN4 1566 SKIP 1503 SKIPC1 366 SKIPC2 503 SKIPC3 520 SKIPPU 452 SKST 374 START2 338 TAPE 1469 TWO1S2 1729 TWO2S2 1727 TWO3 1718 TWO3S2 1725 TWO4S2 1723 TXLIM 1792 TXTSTR 2701 WCHAR 1669 WCOL 1653 WORK 1842 WORK3 1694 WORKA 1817 WROW 1661 X1 89 X2 94 X3 99 ZERO1 1711 ZERO3 1710
Object Deck
,008015,022026,030037,044,049,053053N000000N00001026 0001 L068116,105106,110117B101/I9I#071029C029056B026/B001/0991,001/001117I0?0002 ,008015,022029,036040,047054,061068,072/061039 ,00100110400003 000 L003089,040040,040040,04004010400004 000 L003094,040040,040040,04004010400005 000 L003099,040040,040040,04004010400006 11111 L005205)201201,040040,04004010400007 000/080.,001B5341M025Y17 L024358,338342,343347,35135210400008 B366CF11B374EK1C645001B511S L027385,364366,367372,37438110400009 CX77001BV61SCX52001BV28SCX53001BV45S L036421,393398,405410,41704010400010 B511ACX75X15B452SB452DL0801804B646 L034455,427434,439444,45145210400011 MX44W45MY17Y42B875MY92Y42B875MZ17Y42 L036491,463470,474481,48504010400012 B875B503CF1BV70B359K1B520C L026517,496501,503507,51151310400013 F1B530BU%U1R.111H641NM644099 L028545,520525,530534,53853910400014 MX36X92/080,0011C645001B638SCW44X92 L035580,553557,561562,56957410400015 B561SAX62X92M065P?1#6440991C645001B638SL039619,586593,600607,60861510400016 M065P?1#644099B561B000065-H873 L030649,627634,638642,64564610400017 MX33W45MX36337MY67Y42M337089MX36094 L035684,657664,671678,04004010400018 M0'1W68MW68YJ8AX14089AX14094CX39094 L035719,692699,706713,04004010400019 B737SCX40W68B685/M089337B875MY67Y42 L035754,725732,737744,74804010400020 MX40874M337089MX43094M0'1W68MW68YJ8 L035789,762769,776783,04004010400021 AX14089C089X74B859SCX40874B833/CX40W68 L038827,797804,809816,82104010400022 B776SMW68874AX14094CX39094B776/M089337 L038865,833840,847854,85904010400023 B875B0001HU67MX10W61MX10W53MX36X02 L034899,870874,875879,88689310400024 /332/,201MW53089MY/8W68AX14W53MX47W77 L037936,904905,909916,92393010400025 CX48W68B960/MX49W76B/44CX50W68B983/ L035971,944949,956960,96704010400026 MX33W76B/44CX51W68B'06/MX54W76B/44 L034'05,979983,990995,'0204010400027 DW68W77CW68X11B'43/MX55W76MX11W77B/44 L037'42,'13'20,'25'32,'3904010400028 CX56W68B/44UCX57W68B'74TAX15W76CX58W68 L038'80,'50'55,'62'67,'7404010400029 B'93TAX15W76CX59W68B/12TAX15W76CCX56W68L039/19,'86'93,/00/05,/12/1310400030 B/44SB/44TMX10W77MX40W68NMW77W94AW77W94L039/58,/25/30,/37/44,/45/5210400031 AW77W94AW77W94AW77W94AW77W94AW77W94 L035/93,/66/73,/80/87,04004010400032 AW94W94MW94W77AW61W77AW61W77AX18W77 L035S28,S01S08,S15S22,04004010400033 MX02099MW77089MZ/7W85MX36094CXP9W85 L035S63,S36S43,S50S57,04004010400034 BT01TMW68W69SXP9W85DW85X32MX32W85BT08 L037T00,S69S76,S83S90,S9704010400035 MX40W69AX43094MW692?1AX62099CX44W45 L035T35,T08T15,T22T29,04004010400036 BT55SMW692?1AX62099CX65094BS57TAX62099 L038T73,T41T48,T55T62,T6704010400037 CX44W45BT93SAX62099M099X02CX68099B909T L038U11,T81T86,T93U00,U0704010400038 BU69CX44W45BU32SBU69AX14W61CX71W61B886TL039U50,U16U23,U28U32,U39U4610400039 /332/,201BU69B0000HV26 L022U72,U55U56,U60U64,U68U6910400040 BV03CCX75X15BV03SCX53001BV03S2BV23B L035V07,U78U85,U90U97,V02V0310400041 LP00333M%U1001WB0000HV43LX15X75. L032V39,V15V23,V27V28,V32V3910400042 B0000HV60LX76V08.B000HV69 L025V64,V44V45,V49V56,V57V6110400043 .B000HW41NMW44099MX36094/332 L028V92,V66V70,V74V75,V82V8910400044 ,201C094X92BW38SMP?1330BU69#W44099 L034W26,V97W04,W09W16,W2004010400045 AX62094BV97B0001300WCOL:000 L027W53,W34W38,W42W45,W46W5110400046 WROW:000PCHAR:00INDX:111 L024W77,W59W62,W68W69,W70W7510400047 MASK2:00WORK3:000PCOL:000ZERO3 L030X07,W84W86,W92W95,X00X0310400048 0000001100200516 L016X23,X11X12,X15X16,X19X2210400049 0804020101000 L013X36,X26X28,X30X32,X33X3410400050 012 00200 ,3 L013X49,X40X41,X44X45,X48X4910400051 .-$=24Z L007X56,X51X52,X53X54,X55X5610400052 SJA001009132007 L015X71,X58X59,X60X63,X66X6910400053 0790N?160804 L012X83,X75X76,X77X78,X80X8210400054 0201000000000000000000000000000000 L034Y17,X86X88,X90X93,04004010400055 0000000000000000000000000 L025Y42,040040,040040,04004010400056 L025Y67,040040,040040,04004010400057 VISITED THE COMPUTER L025Y92,040040,040040,04004010400058 HISTORY MUSEUM 00000000000000L039Z31,040040,040040,04004010400059 0412040404041414170102030431 L028Z59)Z32Z32,040040,04004010400060 3102040201011402061018310202 L028Z87)Z60Z60,040040,04004010400061 3116300101171406081630171714 L028!15)Z88Z88,040040,04004010400062 3101020408080814171714171714 L028!43)!16!16,040040,04004010400063 1417171501021200000000001212 L028!71)!44!44,040040,04004010400064 1417171731171730171730171730 L028!99)!72!72,040040,04004010400065 1417161616171424181717171824 L028J27)J00J00,040040,04004010400066 3116163016163131161630161616 L028J55)J28J28,040040,04004010400067 1417162317171517171731171717 L028J83)J56J56,040040,04004010400068 1404040404041400000031000000 L028K11)J84J84,040040,04004010400069 0702020202181217182224221817 L028K39)K12K12,040040,04004010400070 1616161616163117272121171717 L028K67)K40K40,040040,04004010400071 1717252119171714171717171714 L028K95)K68K68,040040,04004010400072 3017173016161614171717212213 L028L23)K96K96,040040,04004010400073 3017173020181700000000120408 L028L51)L24L24,040040,04004010400074 0001020304160015161614010130 L028L79)L52L52,040040,04004010400075 3104040404040417171717171714 L028M07)L80L80,040040,04004010400076 1717171717100417171721212110 L028M35)M08M08,040040,04004010400077 1717100410171717171710040404 L028M63)M36M36,040040,04004010400078 3101020408163114171921251714 L028M91)M64M64,040040,04004010400079 123456789012345678901234567890 L030N21,040040,040040,04004010400080 "0 L002P01,P01040,040040,04004010400081 /338080 0082
Blurb-Draft
001 002 003 004 1401 DATA PROCESSING SYSTEM 005 006 007 008 THE IBM 1401 DATA PROCESSING SYSTEM,INTRODUCED IN OCTOBER 1959,WA 009 S ONE OF IBM'S MOST IMPORTANT AND SUCCESSFUL PRODUCTS. ABOUT 010 15,000 1401-FAMILY COMPUTERS WERE MADE AND DELIVERED WORLDWIDE IN 011 THE 1960'S,FAR EXCEEDING INITIAL EXPECTATIONS. BY MARCH 1961 012 AFTER ONLY A SINGLE YEAR OF FULL PRODUCTION,2,000 MACHINES HAD AL 013 READY BEEN DELIVERED. A YEAR LATER INCOME FROM THE 1401 LINE 014 SURPASSED THAT FROM UNIT RECORD ACCOUNTING MACHINES FOR THE FIRST 015 TIME. CONVINCING IBM THAT THE ERA OF COMPUTERS HAD ARRIVED. 016 BY 1964,40% OF ALL EXISTING COMPUTERS WERE IBM FAMILY MACHINES. 017 THE RUNAWAY SUCCESS OF THE 1401 INSPIRED TWO APPLICATION 018 COMPATIBLE COMPUTERS: 1) THE HONEYWELL H-200 MARKETED AS THE "LIB 019 ERATOR", AND 2) THE IBM 360 MODEL 30, THE NATURAL SUCCESSOR TO 020 THE 1401, DELIVERED IN 1965, THAT EMULATED THE 1401'S INSTRUCTION 021 SET VIA SPECIAL MICROCODE. THE 1401 AND FOLLOW-ON FAMILY 022 COMPATIBLE MACHINES WERE SOLD UNTIL 1970. 023 024 025 026 THE GOAL OF THE 1401'S DESIGN WAS TO BE A CAPABLE BUSINESS SYSTEM 027 AT LEAST THREE TIMES AS FAST YET CHEAPER THAN THE UBIQUITOUS 028 PLUG-BOARD BASED UNIT-RECORD ACCOUNTING MACHINES OF THE 1950'S, T 029 HE IBM 402,407 AND 604. THE GOAL WAS ACHIEVED BY CLEVER DESIGN 030 OF THE SYSTEM ARCHITECTURE AND THE USE OF MODERATE-SPEED TRANSIST 031 OR CIRCUITRY. THE METHOD OF READING DATA INTO CORE MEMORY AND 032 MANIPULATING IT THERE, ALONG WITH THE USE OF MAGNETIC TAPE TO REP 033 LACE BULKY CARD DECKS FOR MASTER AND SCRATCH DATA FILES, MADE 034 COLLATE/MERGE/PRINT OPERATIONS MUCH FASTER AND MUCH CHEAPER THAN 035 THE OLD CARD-BASED ACCOUNTING SYSTEMS. 036 037 038 1401 SYSTEMS COULD BE CONFIGURED WITH 1,400 TO 4,000 CHARACTERS O 039 F MEMORY IN THE CPU AND UP TO 12,000 MORE IN AN EXTENDED-MEMORY 040 EXTERNAL UNIT FOR A MAXIMUM OF 16,000. THE TYPICAL INSTALLATION H 041 AD 4,000 OR 8,000 CHARACTERS OF MEMORY FOR PROGRAMS AND DATA. 042 THE MEMORY TECHNOLOGY WAS MAGNETIC CORES, TINY FERRITE DONUTS WOV 043 EN BY HAND INTO A MESH OF FINE WIRES. EACH DONUT CAN BE 044 MAGNETIZED IN ONE OF TWO ORIENTATIONS WHICH CAN BE SENSED BY PULS 045 ING A CURRENT THROUGH THE MESH, GIVING A 1 OR 0 VALUE. CORE 046 MEMORY BEING HAND-MADE COST IBM AS MUCH AS $4/CHARACTER -- SEVERA 047 L HUNDRED MILLION TIMES THE PER-BYTE COST OF MEMORY TODAY. 048 049 050 THE 1401 INSTRUCTION SET WAS DESIGNED FOR EFFICIENT HANDLING OF B 051 USINESS DATA-PROCESSING APPLICATIONS. IT IS BASED AROUND THE USE 052 OF VARIABLE-LENGTH CHARACTER STRINGS AND DECIMAL ARITHMETIC ON VA 053 RIABLE-LENGTH DECIMAL OPERANDS, UNLIKE THE FIXED PRECISION BINARY 054 ARITHMETIC USED IN MOST CURRENT MACHINES. A 1401 MEMORY POSITION 055 HAS 6 DATA BITS PLUS AN END-OF-WORD MARK BIT AND A PARITY BIT. 056 THE 6 DATA BITS ALLOW FOR A SET OF AT MOST 64 CHARACTERS, THE WOR 057 D-MARK BIT DELIMITS THE END OF A VARIABLE-LENGTH OPERAND, EITHER 058 A STRING OR A DECIMAL NUMBER. 059 060 061 062 CONTRIBUTING TO THE SUCCESS OF THE 1401 WAS ITS FAMILY OF HIGHLY 063 RELIABLE AND CAPABLE PERIPHERALS. THE 1402 READER/PUNCH READS 064 AT 800 CARDS/MINUTE AND PUNCHES 250 CARDS/MINUTE. THE 1403 CHAIN 065 PRINTER WRITES UP TO 600 LINES/MINUTE. AS MANY AS 6 REEL-TO-REEL 066 TAPE DRIVES COULD BE ATTACHED. lATER THE MODEL 1311 DISK STORAGE 067 UNIT BECAME AVAILABLE WITH REMOVABLE DISK PACKS HOLDING UP TO 068 2 MILLION CHARACTERS (WELL UNDER THE CAPACITY OF A REEL OF TAPE). 069 THERE WAS NO OPERATING SYSTEM SO PROGRAMS ACCESSED DISK DATA BY 070 PHYSICAL HEAD AND TRACK. IN 1965 DISKS AND AN OPERARTING SYSTEM B 071 ECAME STANDARD WITH THE IBM 360 LINE. 072 073 074 WHILE THE 1401 COST LESS TO MAKE THAN A UNIT-RECORD INSTALLATION 075 OF COMPARABLE ABILITY, THE 1401 WAS BY NO MEANS SIMPLE. A LARGE 076 1401 SYSTEM COMPRISES ABOUT 100,000 MECHANICAL PARTS AND ABOUT 50 077 ,000 ELECTRICAL COMPONENTS, INCLUDING 10,000 TRANSISTORS AND 078 14,000 DIODES ACROSS 3,000 SMS CARDS. EACH SYSTEM CAME WITH A ROL 079 LING CART WITH DOZENS OF LARGE BINDERS OF CIRCUIT DIAGRAMS AND 080 MAINTENANCE INSTRUCTIONS, AND MANY YARDS OF HEAVY, ARM-THICK DATA 081 AND POWER CABLES TO CONNECT ITS UNITS. 082 083 084 THE IBM BUSINESS MODEL, DEVELOPED AROUND THE LARGELY-MECHANICAL U 085 NIT-RECORD BUSINESS, WAS TO BUILD TO A HIGH STANDARD AND TO RENT 086 NOT SELL,THE HARDWARE. A TYPICAL 4,000 CHARACTER 1401 SYSTEM RENT 087 ED FOR ABOUT $7,000 PER MONTH: ABOUT $50,000/MONTH IN TODAY'S 088 DOLLARS, ADJUSTED FOR INFLATION. THE LEASE FEE INCLUDED MAINTENAN 089 CE FROM IBM CUSTOMER ENGINEERS (C.E'S) ON CALL 24/7. IF ONE 090 COMPARES THE COMPUTATIONAL POWER OF A MODERN PC TO THE 1401 SYSTE 091 M IN TODAY'S DOLLARS, THE MODERN PC IS ABOUT 10 BILLION TIMES 092 FASTER PER DOLLAR! 093 094 095 096 COMPUTER HISTORY MUSEUM VOLUNTEERS, INCLUDING ABOUT A DOZEN RETIR 097 ED IBM ENGINEERS, HAVE WORKED FOR OVER 10,000 HOURS AND 4 YEARS 098 TO FULLY RESTORE THIS 1401 SYSTEM. WE'RE LOOKING FOR NEW VOLUNTE 099 ERS! IF INTERESTED, PLEASE SEE THE PROJECT WEB SITE AT 100 HTTP://WWW.EDTHELEN.ORG/1401PROJECT/1401RESTORATIONPAGE.HTML 101 - ON APRIL 5, 2008 DAN MCINNIS - - BILL WORTHINGTON DAVID CORTESI JIM SOMERS STAN PADDOCK DAN MCINNIS - = ? $ NP00333M%U1001WB0000HV43LX15X75. L032V39,V15V23,V27V28,V32V3910400042
return to main page