AUTOCODER RUN THRU OUTPUT JOB CONDENSED DISK DUMP TO CARDS CTL 2 1 S D * INITIALIZATION START CS 99 SW 87,92 SW 97,WRDSEP MLC WRDSEP,MAIN4&7 MZ *-6,MAIN5&7 MAKE THE D-CHAR AN ALT-BLANK * * SET UP HEADER CARD * CS 180 LCA GMARK,181 LCA HEADER,180 WCP MSG01 WCP MSG02 SBR X1,MSG03 SBR X2,LENGTH-17 B ANSWER MN ANSWRS&19,CODE MN ANSWRS&19,101 MLC @000@,104 SBR X1,MSG04 B ANSWER BCE START6,ANSWRS&19,Y START4 SBR X1,MSG05 SBR X2,LENGTH-12 B ANSWER C X3,&.ANSWRS&21. BU START4 MCM ANSWRS&14,166 MLC @ @,172 START5 SBR X1,MSG06 B ANSWER C X3,&.ANSWRS&21. BU START5 MCM ANSWRS&14,175 START6 SBR X1,MSG07 SBR X2,LENGTH#18 B ANSWER MCM ANSWRS&2,130 LCA @ @ REMOVE GM P MLC 171,REALSC SET UP DISK MLC 180,ENDSC MLC REALSC,DSKBUF-4 SD DSKBUF-10 INIT SEEK TO CYL 0 BIN *-12,\ BIN DSKERR,Y CS 180 MLC SEQNO,104 MLC SBR X2,104 B DISKRD END OF INITIALIZATION * * QUESTION-ANSWER SUBROUTINE * CALL WITH MESSAGE POINTER IN X1 * AND LO-ORDER POINTER TO PROPER LENGTH BLANK FIELD IN X2 * X3 RETURNS WITH B-ADDRDREG AFTER INPUT * ANSWER SBR ANSWEX&3 ANSWE1 WCP 0&X1 BIN *&5,Q B *-8 LCA 0&X2,ANSWRS&19 SBR *&14 MA @001@,*&7 RCP 0 SBR X3 BIN ANSWE1,* ERROR - ASK IT AGAIN ANSWEX B 0 EXIT * * MSG01 DCW @CONDENSED DISK DUMP@,G MSG02 DC @READY DRIVE 0@,G MSG03 DC @TYPE ONE-DIGIT ID CODE@,G MSG04 DCW @DUMP ENTIRE DISK?@,G MSG05 DCW @STARTING DISK ADDR /6 DIGITS, START OF CYL/@,G MSG06 DCW @LAST DISK ADDRESS /6 DIGITS, LAST TRACK OF CYL@,G MSG07 DCW @TYPE ID MSG -- UP TO 18 CHARS@,G ANSWRS DCW #20,G HEADER DCW @TRACK ADDRESSES 000000 - 019980@ SKIPN * DISK READ -- READS ONE TRACK /20 SECTORS/ * DISKRD BCE BFILL,MAIN3,B DUMP REMAINING BLANKS **SUBR** C REALSC,ENDSC BL EOJ BCE SEEKIT,SKCNT-1,1 BR TO SEEK NEXT CYL /DIRECT/ DISKR2 MLC DSKBUF-4,DATAIN SAVE SECTOR ADDR FOR OUTPUT RD DSKBUF-10 BIN *-12,\ BIN BADADR,X BIN DSKERR,Y * * OUTPUT THE SECTOR ADDRESS * B SPCHAR PUT A WORD-SEPARATOR /DBL CHK/ SBR X1,@T@ PUT IN T FOR TRACK ADDRESS B PUTIT SBR X1,DATAIN-5 SBR X3,6 DISKR4 B PUTIT A @1@,X1 S @1@,X3 BCE DISKR6,X3,? B DISKR4 LOOP 6 TIMES * * SET DISK STUFF FOR NEXT TIME * DISKR6 A @1@,SKCNT COUNT 10 TRACKS FOR SEEKING A @020@,REALSC KEEP TABS ON REAL SECTOR ADDRESS MLC @020@,DSKBUF-1 SECTOR COUNT A @1@,DSKBUF-4 UPDATE SECTOR ADDR FOR READ SBR X1,DSKBUF POINT TO BUFFER B MAIN2 ENTER THE MAIN LOOP * * SEEKIT SD DIRECT DIRECT SEEK - ONE CYL BIN *-12,\ BIN DSKERR,Y S SKCNT RESET COUNTER B DISKR2 RETURN DIRECT DCW @00002#0000@ * * DSKERR H *-3 ***INSERT MESSAGES HERE*** * * BADADR WCP MSG10 BIN *&5,Q B *-8 LCA REALSC,DATAIN CLEAR STRAY GROUP-MARKS RCP DATAIN-5 BIN BADADR,* MLC DATAIN,DSKBUF-4 B DISKR2 TRY THIS ADDRESS * MSG10 DCW @WHAT ADDRESS FOR SECTOR @ REALSC DCW 000000 DC @?@,G GMARK EQU * ENDSC DCW #6 DATAIN DCW #6,G SKCNT DCW 00 DCW 0000000020 DSKBUF DA 1X2000,G,C SKIPN * TRANSFER CHARS FROM DISK BUFFER TO CARDS * * STRINGS OF MORE THAN 4 BLANKS ARE CONDENSED TO 4 CHARS * /WRD-SEP AND 3-CHAR COUNT * * WORD-SEPARATORS AND ALT BLANKS ARE PRECEDED BY WRD-SEP * * BLANK A @1@,BCOUNT COUNT THE BLANK MLC @B@,MAIN3 SET SWITCH - FALL THRU TO MAIN * MAIN LOOP MAIN A @1@,X1 GET NEXT CHAR BWZ DISKRD,0&X1,1 UNLESS END OF TRACK BUFFER MAIN2 BCE BLANK,0&X1, BRANCH IF BLANK MAIN3 NOP BFILL BRANCH IF PREVIOUS CHARS WERE BLANK MAIN4 BCE SPCHAR,0&X1, D-CHAR IS WORD-SEP MAIN5 BCE ALTBLK,0&X1, D-CHAR IS ALT-BLANK B PUTIT OUTPUT CHAR *** SUBROUTINE B MAIN LOOP * * OUTPUT SUBROUTINE * PUTIT SBR PUTITX&3 A @1@,X2 BCE PUNCH,0&X2,_ TIME TO PUNCH CARD /GM/ PUTIT2 SW 0&X2 MOVE ONE CHAR... MLC 0&X1,0&X2 ...INTO PUNCH BUFFER PUTITX B 0 RETURN * PUNCH P CS 180 MA @001@,SEQNO 3-CHAR SEQ NO. C SEQNO,@000@ BU PUNCH1 MZ @-@,CODE AFTER 16000 CARDS PUNCH1 MLC SEQNO,104 MLC SBR X2,105 B PUTIT2 * * BLANK FILL OR COMPRESS * BFILL SBR BFILLZ&3 MLC X1,SAVEX1 C BCOUNT,@0005@ DO WE COMPRESS BL BFILL2 YES SBR X1,@ @ NO - JUST OUTPUT BLANKS BFILL1 B PUTIT S @1@,BCOUNT BCE BFILLX,BCOUNT,? B BFILL1 LOOP /BCOUNT/ TIMES * * COMPRESS THE BLANKS BFILL2 SBR X1,WRDSEP OUTPUT A WORD-SEP B PUTIT SBR X1,@B@ PUT IN A B FOR B PUTIT BLANKS BCE BFILL5,BCOUNT-3,0 BCE BFILL4,BCOUNT-3,1 DAMN THE COLLATING SEQUENCE BCE BFILL3,BCOUNT-3,2 H *-3 ****************DEBUG HALT************** BFILL3 MZ @R@,BCOUNT-2 B BFILL5 BFILL4 MZ @Z@,BCOUNT-2 BFILL5 SBR X1,BCOUNT-2 B PUTIT SBR X1,BCOUNT-1 B PUTIT SBR X1,BCOUNT B PUTIT * EXIT BFILLX MLC @0000@,BCOUNT RESET COUNT MLC @N@,MAIN3 RESET SWITCH MLC SAVEX1,X1 RESTORE X1 BFILLZ B 0 RETURN * * SPECIAL CHARACTER - PUT A WORD SEP FIRST * SPCHAR SBR SPCHAX&3 MLC X1,SAVEX1 SBR X1,WRDSEP B PUTIT MLC SAVEX1,X1 SPCHAX B 0 * * ALTERNATE BLANK-PUNCHED AS A WRD-SEP FOLLOWED BY A BLANK * ALTBLK B SPCHAR PUT IN A WRD-SEP MCW @ @,0&X1 MOVE IN A BLANK B MAIN5 * * * * * EOJ B SPCHAR SBR X1,@T@ SET START OF DUMMY TRACK. B PUTIT P WCP MSGEOJ H *-3 NOT RESTARTABLE MSGEOJ DCW @EOJ@,G * BCOUNT DCW 0000 SAVEX1 DCW #3 WRDSEP DCW @0+@ WORD SEP /EXTRA CHAR FOR AUTOCODER/ CODE DCW 0 THESE TWO... SEQNO DCW 001 ...MUST BE TOGETHER END START