.
. PRINT PROCESS
.
.
. DRIVEN FROM COMMAND OPTIONS:
.
. <NONE> FIELDATA CHARACTERS
. 'A' ASCII CHARACTERS
. 'I' INTEGER FORMAT
. 'K' SIDE-BY-SIDE OCTAL, FD, ASCII
. 'O' OCTAL FORMAT
. 'N' NULL FORMAT: BLOCK HEADERS ONLY
. 'T' TEXT FORMAT: ALPHANUMERIC WITHOUT WORD DIVISION
. 'X' SHORT FORMAT: NO HEADER, NO ADDRESS
.
.
. (C) Copyright 1972-1978 John Walker
.
. This software is in the public domain
.
AXR$
DEFUNCT$
FANG
UPOSITY EQU R7 UPOSITY OF DUMP FORMAT
CWFORMAT EQU R8 CURRENT FORMAT EDITING CODE
ILS EQU R9 INTER-ITEM SPACING
SBLOC EQU R10 ADDRESS OF SUPPRESSION BUFFER
BCMPQ EQU R11 BLOCK COMPLETION QUEUE
XFORMT EQU R12 'X' FORMAT FLAG
PURE CODE
.
. LX X9,(<BLOCK COMPLETION QUEUE>,<COMPLETION QUEUE>)
. LX,U X10,<FCT>
. LMJ A2,PRINT
. <RETURN>
.
. V'S <COMPLETION QUEUE> WHEN DUMP IS DONE
. V'S <BLOCK COMPLETION QUEUE> AT END OF EACH BLOCK DUMPED
. SKIPS V IF EITHER IS ZERO
.
PRINT* FORK DUMPPRI FIRE UP A DUMPING ACTIVITY
J 0,A2 RETURN TO CALL
.
DUMPPRI quarterword TURN ON QUARTER WORD MODE
R$DITA . ENTER ASCII EDITING MODE
LA,U A9,,X9 SAVE COMPLETION QUEUE ADDRESS
LA A0,X9 LOAD COMPLETION QUEUE ADDRESS
SSL A0,18 SHIFT OFF PROCESS COMPLETION QUEUE
LR,U BCMPQ,,A0 LOAD BLOCK COMPLETION QUEUE ADDRESS
LR,U XFORMT CLEAR 'X' FORMAT MODE
LR,U CWFORMAT,'A' ASSUMED FORMAT IS ALPHANUMERIC
LR,U UPOSITY,16 WITH 16 PER LINE
LR,U ILS,1 AND ONE SPACE BETWEEN ITEMS
LA A0,CDOPTS,X8 LOAD OPTIONS
TOP A0,(OPTION('A')) ASCII DUMP DESIRED ?
J NOQO NO. CHECK 'O' OPTION FOR OCTAL
LR,U CWFORMAT,'Q' SET 'Q' MODE FOR ASCII DUMP
LR,U UPOSITY,16 PRINT 16 WORDS PER LINE
LR,U ILS,1 ...AND ONE SPACE BETWEEN WORDS
NOQO TOP,U A0,OPTION('O') IS 'O' OPTION ON FOR OCTAL ?
J NOAO NO. CHECK OTHERS
LR,U CWFORMAT,'O' LOAD OCTAL FORMAT
LR,U UPOSITY,8 EIGHT PER LINE
LR,U ILS,2 TWO SPACES BETWEEN WORDS
noao top a0,(option('B')) dump in EBCDIC ?
j nobo no. go check other options
lr,u cwformat,'B' yes. get dump format letter
lr,u uposity,16 dump 16 words per line
lr,u ils,1 get inter-word spacing
nobo top,u a0,option('N') list only blocks and lengths ?
J NONO NO. LOOK AGAIN
LA,U A1,'N' GET INDICATOR FOR FORMAT
SA A1,CWFORMAT SET IT IN FORMAT
NONO TOP,U A0,OPTION('I') 'I' OPTION SET ?
J NOIO NO. SKIP SPECIAL SETUP
LR,U CWFORMAT,'I' SET FOR INTEGER FORMAT
LR,U ILS,2 TWO SPACES BETWEEN WORDS
LR,U UPOSITY,8 EDIT 8 PER LINE
NOIO TOP,U A0,OPTION('K') 'K' OPTION ON ?
J NOKO NO. CHECK 'X' OPTION
LR,U CWFORMAT,'K' SET SIDE-BY-SIDE FORMAT
LR,U ILS,1 ONE SPACE BETWEEN WORDS
LR,U UPOSITY,4 LOAD FOUR-UP FOR BATCH
NOKO TEP,U A0,OPTION('X') 'X' OPTION SET ?
LR,U XFORMT,1 SET 'X' FORMAT
TEP,U A0,OPTION('T') TEXT MODE ?
LR,U ILS YES. NO INTER-ITEM SPACING
JNDEM DUMPX ENTER DUMP IF NOT DEMAND
LA A0,UPOSITY LOAD UPOSITY
SSL A0,1 DIVIDE BY TWO FOR NARROW DEMAND TERMINAL
SA A0,UPOSITY STORE OUT UPDATED UPOSITY
DUMPX LA A0,UPOSITY LOAD UPOSITY FOR DUMP
BGET . ALLOCATE A BUFFER FOR SUPPRESSION
LR,U SBLOC,,A0 SAVE SUPPRESSION BUFFER ADDRESS
DUMPPR GET IOBB,X10 GET A BLOCK FROM THE BOUNDED BUFFER
LX X7,IBIOP,A1 LOAD SOURCE FCT ADDRESS
LX,U X9,,A1 COPY BLOCK ADDRESS TO X9
LX,U X8,IBDATA,X9 X8 = DATA POINTER
LXI,U X8,1 SET UP INCREMENT
TZ IBSTAT,X9 WAS STATUS NORMAL ?
J DUMPAB NO. DUMP ABNORMAL STATUS
ABNRET LA,U A10 CLEAR RELATIVE ADDRESS WITHIN BLOCK
LA,U A12 CLEAR LINES SKIPPED FLAG
LA A13,CWFORMAT LOAD DESIRED DUMP FORMAT
.
. EDIT BLOCK HEADER
.
TZ XFORMT 'X' (SUPER SHORT) FORMAT ?
J DUMPED YES. DON'T EDIT ANY HEADER
TZ IOWAD,X7 WORD-ADDRESSABLE FILE ?
J DUMPED YES. WORD NUMBER WILL SUFFICE
TZ IOMASS,X7 MASS STORAGE FILE ?
J MSED YES. EDIT STARTING SECTOR OF BLOCK
a$qmsg BLKNR EDIT BLOCK NUMBER HEADER
LA A0,IBBLKN,X9 LOAD BLOCK NUMBER
AA,U A0,1 INCREMENT IT SO BLOCKS START AT 1
A$DECV . EDIT BLOCK NUMBER
a$msgr . COPY REST OF MESSAGE
A$DECV IBLEN,X9 EDIT BLOCK LENGTH
a$msgr . COPY REST OF MESSAGE
TNZ IBAFC,X9 WAS THERE AN ABNORMAL FRAME COUNT ?
J NOAFC NO. SKIP CHARACTERS COUNT EDITING
a$qmsg AFCM EDIT TEXT FOR ABNORMAL FRAME COUNT
LA A0,IBLEN,X9 LOAD NUMBER OF WORDS READ
LA A1,IOFDT,X7 LOAD FDT FOR SOURCE FILE
LA A1,FDPROP,A1 LOAD FILE EQUIPMENT PROPERTIES
TOP,U A1,EP9TRK IS THIS A NINE-TRACK TAPE ?
J AFC7TR NO. COMPUTE CHARACTERS FOR 7-TRACK
AA,U A0,1 ROUND UP WORD COUNT TO EVEN
SSL A0,1 COMPUTE NUMBER OF 9-BYTE GROUPS
MSI,U A0,9 COMPUTE BYTES IN COMPLETE BLOCK
ANA,U A0,9 SUBTRACT BYTES IN LAST GROUP
J AFCADR ADD BYTES IN LAST GROUP FROM AFC
.
AFC7TR MSI,U A0,6 COMPUTE CHARACTERS IN BLOCK
ANA,U A0,6 SUBTRACT CHARACTERS IN LAST WORD
AFCADR AA A0,IBAFC,X9 ADD REMNANT CHARACTERS
A$DECV . EDIT CHARACTER COUNT IN BLOCK
a$msgr . COPY REST OF MESSAGE
NOAFC TE,U A13,'N' 'N' FORMAT DUMP ?
J NONN NO. NORMAL DUMP, WE WILL LIST BLOCK
R$PRTA 1 PRINT HEADER, SINGLE SPACE
J DUMPDN END OF JOB FOR THIS BLOCK
.
NONN R$PRTA 2 PRINT HEADER, DOUBLE SPACE
. J DUMPED GO AND EDIT THE BLOCK
.
. BLOCK EDITOR WITH REPEAT SUPPRESSION
.
DUMPED .
JZ A10,NOSUP DON'T TRY TO SUPPRESS THE FIRST TIME THR
LX X5,SBLOC LOAD ADDRESS OF SUPPRESS BUFFER
LXI,U X5,1 LOAD INCREMENT
LX X6,X8 CURRENT DATA POINTER
LR R1,UPOSITY LOAD UPOSITY FOR THIS DUMP
J JGSU ENTER COMPARISON LOOP
SUPCHK LA A0,,*X6 LOAD FROM DATA BUFFER
TE A0,,*X5 COMPARE WITH LAST LINE
J NOSUP NOT THE SAME, NO SUPPRESSION
JGSU JGD R1,SUPCHK KEEP ON TRUCKIN'
LA A0,A10 LOAD RELATIVE ADDRESS
AA A0,UPOSITY COMPUTE NEXT ADDRESS TO EDIT
TG A0,IBLEN,X9 WAS THE LAST LINE SUPPRESSED ?
J NOSUP YES. DON'T ALLOW SUCH A TRAVESTY
AA,U A12,1 MADE IT! SET LINE SUPPRESSED EDITING FL
AA A10,UPOSITY BUMP RELATIVE ADDRESS
AX X8,UPOSITY UPDATE BUFFER POINTER
J LINEDN SKIP LINE EDITING
.
NOSUP LX X5,SBLOC LOAD SUPPRESS BUFFER ADDRESS
LXI,U X5,1 LOAD INCREMENT FOR SUPPRESS BUFFER
LX X6,X8 GET DATA BUFFER POINTER
LR R1,UPOSITY GET NUMBER OF ENTRIES ON LINE
BT X5,,*X6 MOVE THIS LINE TO COMPARISON BUFFER
TZ XFORMT 'X' FORMAT ?
J XFOAM YES. EDIT SHORT PREFIX
TZ IOWAD,X7 WORD-ADDRESSABLE DRUM ?
J WADMO YES. EDIT DRUM ADDRESS AT LEFT
A$OCTF 6,A10 EDIT BLOCK RELATIVE ADDRESS
WADMOR JZ A12,SKSTE SKIP IF SUPPRESSED
A$FD3 ('** ') EDIT LINES SUPPRESSED FLAG
LA,U A12 CLEAR SUPPRESSION FLAG
J SKSTE1 JUMP AROUND BLANK EDITING
SKSTE A$SKIP 4 SKIP BEFORE DATA EDITING
SKSTE1 LR R5,UPOSITY LOAD LOOP COUNTER FOR LINE
JE A13,'K',KFORML EDIT SIDE-BY-SIDE FOR 'K' FORMAT
J JGED GO AND EDIT THE LINE
.
EDITQ TNE A10,IBLEN,X9 END OF BUFFER YET ?
J JEPT YES. WIND UP
AA,U A10,1 INCREMENT RELATIVE LOCATION
TE,U A13,'O' OCTAL FORMAT ?
JNZ A13,CHKFA OR SOME OTHER ?
LA A0,,*X8 OCTAL. LOAD UP THE WORD
A$OCTF 12 EDIT IT INTO THE LINE
J QUANDN END OF QUANTITY EDITING
.
CHKFA TE,U A13,'A' IS IT ALPHABETIC ?
j chkfb no. check further
LMJ X11,FCTLPRO EDIT FIELDATA, PROTECTING FROM EOL
J QUANDN ALL DONE HERE
.
chkfb te,u a13,'B' EBCDIC dump ?
j chkfn no. check other options
lmj x11,ebcwrd yes. edit the word as EBCDIC
j quandn go check done and continue
.
CHKFN TE,U A13,'N' IS IT 'N' FORMAT ?
J CHKFI CHECK FOR INTEGER FORMAT
J DUMPDN YES. DONE WITH THIS BLOCK
.
CHKFI TE,U A13,'I' INTEGER FORMAT ?
J CHKFQ NO. CHECK FOR 'Q' FORMAT: ASCII
LA A0,,*X8 LOAD THE VALUE
A$DECF 12 EDIT THE VALUE IN DECIMAL
J QUANDN GET NEXT QUANTITY
.
CHKFQ TE,U A13,'Q' ASCII CHARACTER FORMAT ?
IERR . OOPS ! FORGOT TO IMPLEMENT SOMETHING
LMJ X11,CTLPRO PROTECT AGAINST CONTROL CHARACTERS
J QUANDN GET NEXT QUANTITY
.
QUANDN A$SKIP ILS,,W SKIP BETWEEN WORDS
JGED JGD R5,EDITQ LOOP FOR WHOLE LINE
JEPT R$PRTA 1 PRINT THE LINE OF THE DUMP
.
LINEDN TLE A10,IBLEN,X9 ARE WE AT END OF DUMP ?
J DUMPED NO. EDIT ANOTHER LINE
DUMPDN LA A1,IBLAST,X9 LOAD 'THIS IS LAST BLOCK'
BRELP X9 RELEASE THE BUFFER
TNZ BCMPQ ANY BLOCK COMPLETION QUEUE ?
J NOBCQ NO. SKIP NOTIFICATION
LA A0,BCMPQ LOAD ADDRESS OF BLOCK COMPLETION QUEUE
V . INDICATE BLOCK COMPLETION
NOBCQ JZ A1,DUMPPR IF NOT LAST ONE, KEEP ON
R$DITXA . RELEASE EDITING BUFFER AND LINE
BRELP SBLOC RELEASE SUPPRESS COMPARE LINE
LA A0,A9 LOAD ADDRESS OF COMPLETION QUEUE
JZ A0,EXIV SKIP 'V' IF COMPLETION QUEUE ISN'T SPECI
V . INDICATE COMPLETION
EXIV EXIT . TERMINATE THIS PROCESS
.
. EDIT SIDE-BY-SIDE DUMP OF OCTAL, FIELDATA, ASCII FOR 'K' FORMAT
.
KFORML SA A10,A6 SAVE BUFFER OFFSET IN A6
SX X8,A7 SAVE WORD POINTER IN A7
LR R5,UPOSITY LOAD UPOSITY OF DUMP
J KFOE ENTER OCTAL EDITING SEGMENT
KFOS TNE A10,IBLEN,X9 END OF BLOCK ?
J KFOX YES. SKIP THIS ITEM
AA,U A10,1 NO. INCREMENT WORDS EDITED
A$OCTF 12,,*X8 EDIT TWELVE OCTAL DIGITS
KFOR A$SKIP ILS,,W SKIP BETWEEN WORDS
KFOE JGD R5,KFOS LOOP FOR UPOSITY WORDS
LA A10,A6 RESTORE BUFFER OFFSET
LX X8,A7 RESTORE WORD POINTER
A$SKIP 3 SKIP BEFORE FIELDATA
LR R5,UPOSITY LOAD UPOSITY FOR DUMP
J KFFE ENTER FIELDATA EDITING LOOP
KFFS TNE A10,IBLEN,X9 END OF BUFFER ?
J KFFX YES. PAD TO ASCII AREA
AA,U A10,1 INCREMENT BUFFER OFFSET
LMJ X11,FCTLPRO EDIT FIELDATA, PROTECTING FROM EOL
KFFR A$SKIP ILS,,W SKIP BETWEEN WORDS
KFFE JGD R5,KFFS LOOP FOR UPOSITY
A$SKIP 3 SKIP BEFORE ASCII VERSION
LA A10,A6 LOAD BUFFER OFFSET
LX X8,A7 RELOAD BUFFER POINTER
LR R5,UPOSITY LOAD UPOSITY OF DUMP
J KAFE ENTER ASCII EDITING
KAFS TNE A10,IBLEN,X9 END OF BUFFER ?
J KAFX YES. ALL DONE
AA,U A10,1 INCREMENT OFFSET
LMJ X11,CTLPRO PROTECT AGAINST CONTROL CHARACTERS
A$SKIP ILS,,W EDIT SPACE BETWEEN WORDS
KAFE JGD R5,KAFS LOOP FOR ALL WORDS ON LINE
KAFX J JEPT DONE. PRINT THE LINE
.
KFOX A$SKIP 12 TAB OVER MISSING NUMBER
J KFOR KEEP ON GOING
.
KFFX A$SKIP 6 TAB OVER OMITTED FIELDATA NUMBER
J KFFR CONTINUE TO EXHAUST UPOSITY
.
. ABNORMAL STATUS - TERMINATE DUMP WITH MESSAGE
.
DUMPAB .
LA A0,IBSTAT,X9 LOAD THE ABNORMAL STATUS
TNE,U A0,STERM SOFTWARE TERMINATION STATUS ?
J DUMPDN YES. IGNORE THIS BLOCK
TNE,U A0,1 END-OF-FILE ?
J DUMPEOF YES. LIST EOF IF FROM TAPE
TE,U A0,4 WAS IT ABNORMAL FRAME COUNT ?
TNE,U A0,5 WAS IT INCOMPLETE BLOCK FROM MASS STORAG
J ABNRET YES. DON'T WORRY ABOUT IT
. READ MESSAGE IS SUFFICIENT (I BELIEVE)
J DUMPDN END OF PROCESSING THIS BLOCK
.
DUMPEOF TZ IOMASS,X7 IS INPUT MASS STORAGE ?
J DUMPDN YES. IGNORE AN EOF STATUS
a$qmsg BLKNR USE THE NORMAL DUMP MESSAGE
LA A0,IBBLKN,X9 LOAD THE BLOCK NUMBER
AA,U A0,1 INCREMENT IT
A$DECV . EDIT BLOCK NUMBER
a$qms1 EOFENC APPEND EOF MESSAGE
LA A1,CWFORMAT LOAD CURRENT DUMP FORMAT
LA,U A0,2 LOAD ASSUMED SPACING
TNE,U A1,'N' IS IT 'N' OPTION DUMP ?
LA,U A0,1 YES. SINGLE SPACE THEM
R$PRTA . PRINT THE LINE
J DUMPDN PROCESS THE NEXT BLOCK
.
WADMO LA A0,IBMSAD,X9 LOAD MASS STORAGE ADDRESS OF THIS BLOCK
AA A0,A10 ADD RELATIVE ADDRESS WITHIN BLOCK
A$OCTF 9 EDIT THE ADDRESS
J WADMOR RETURN TO DUMP EDITING
.
XFOAM JZ A12,SKX1 SKIP SUPPRESSION EDITING IF NONE SKIPPED
A$FCHR '*' EDIT SUPPRESSED FLAG
LA,U A12 CLEAR LINES SKIPPED INDICATOR
J SKSTE1 PROCEED WITH DUMP
SKX1 A$FCHR ' ' EDIT A SPACE
J SKSTE1 CONTINUE
.
MSED a$qmsg SCTM EDIT 'SECTOR'
LA A4,IBLEN,X9 LOAD LENGTH OF BLOCK READ
TLE,U A4,29 MORE THAN ONE SECTOR ?
J NOMULTS NO. LEAVE IT AT 'SECTOR'
a$msgr . OTHERWISE INSURE GOOD GRAMMAR
NOMULTS A$SKIP 1 SKIP BEFORE NUMBER
A$DECV IBMSAD,X9 EDIT ADDRESS IT CAME FROM
TLE,U A4,29 MULTI-SECTOR BLOCK ?
J NOAFC NO. ALL DONE
ANA,U A4,1 DECREMENT LENGTH READ
DSA A4,36 RIGHT JUSTIFY
DI,U A4,28 COMPUTE LENGTH READ IN SECTORS
A$FD3 (' - ') EDIT DELIMITER
AA A4,IBMSAD,X9 COMPUTE UPPER SECTOR NUMBER
A$DECV A4 EDIT HIGH SECTOR OF BLOCK
LA A4,IBLEN,X9 LOAD LENGTH OF BLOCK READ
TE,U A4,1792 DID WE READ EXACTLY ONE TRACK ?
J NOAFC NO. DON'T EDIT TRACK NUMBER
LA A4,IBMSAD,X9 LOAD STARTING ADDRESS OF BLOCK
DSL A4,6 SHIFT OFF SECTOR OFFSET
SSL A5,36-6 RIGHT JUSTIFY SECTOR WITHIN TRACK
JNZ A5,NOAFC DON'T EDIT IF NOT EVEN TRACK
a$qmsg TRKM EDIT TRACK NUMBER
A$DECV A4 EDIT TRACK NUMBER
a$msgr . COPY REST OF TRACK MESSAGE
J NOAFC PRINT THE DUMP HEADER
.
. THIS CODE PREVENTS THE DUMP LISTING FROM BEING DESTROYED BY
. THE PRINTING OF ASCII CONTROL CHARACTERS. ALL CONTROL CHARACTERS
. WILL BE PRINTED AS QUESTION MARKS.
.
CTLPRO SX X11,A5 SAVE RETURN ADDRESS TO CALLER
LA A4,,*X8 LOAD WORD OF ASCII TO BE EDITED
LR,U R4,3 LOAD LOOP COUNT FOR FOUR CHARACTERS
ASPR1 LDSL A3,9 SHIFT OFF NEXT QUARTER WORD
LSSL A3,36-7 ISOLATE PARITY-LESS ASCII CHARACTER
SSL A3,36-7 RIGHT-JUSTIFY IT IN THE WORD
TNE,U A3,0177 IS THE CHARACTER A 'DEL' ?
J ASPR2 YES. PROTECT TERMINAL AGAINST IT
ON EOLA>037 PROTECT AGANIST NON-CONTROL EOL
TE,U A3,EOLA IS IT ASCII END-OF-LINE CHARACTER ?
OFF EOLA>037 PROTECT AGAINST NON-CONTROL EOL
TLE,U A3,040 IS THIS A CONTROL CHARACTER ?
ASPR2 LA,U A3,077 YES. CHANGE IT TO A QUESTION MARK
A$QCHR A3,,W EDIT THE ASCII CHARACTER
JGD R4,ASPR1 LOOP FOR ALL CHARACTERS IN WORD
LX X11,A5 RESTORE RETURN POINT
J 0,X11 RETURN TO CALLER
.
. THIS SUBROUTINE EDITS THE NEXT FIELDATA WORD. IF THE
. PARAMETER 'EOL' IS SET, ALL OCCURENCES OF THE 'EOL'
. CHARACTER ARE CHANGED TO QUESTION MARKS (?).
.
FCTLPRO SX X11,A5 SAVE THE RETURN POINT
LA A4,,*X8 LOAD THE NEXT WORD
LR,U R4,5 LOAD LOOP COUNT FOR EDITING
FSPR1 LA,U A3 CLEAR NEXT CHARACTER
LDSL A3,6 SHIFT OFF NEXT FIELDATA CHARACTER
ON EOL>-1 BEGIN FIELDATA END OF LINE CODE
TNE,U A3,EOL IS THIS LINE TERMINATOR ?
LA,U A3,'?' YES. DISPLAY AS QUESTION MARK
OFF EOL>-1 END FIELDATA END OF LINE CODE
A$FCHR A3,,W EDIT THE FIELDATA CHARACTER
JGD R4,FSPR1 LOOP FOR ALL 6 CHARACTERS
LX X11,A5 LOAD THE RETURN ADDRESS
J 0,X11 RETURN TO CALLER
.
.
. EBCDIC edit routine.
.
. This routine loads the next word, translates it from EBCDIC
. to ASCII, and edits it into the print line. Control characters
. and EBCDIC characters with no corresponding ASCII graphic are
. rendered as question marks.
.
ebcwrd la a5,x11 save return address
la a3,,*x8 load next data word
and a3,(0377377377377) discard parity bits
lr,u r4,3 load loop count for four characters
ebclup la,u a3 clear register for character
ldsl a3,9 shift next character into A3
ana,u a3,0100 is this a control character ?
jn a3,ebctl yes. edit as a question mark
dsc a2,2 separate byte and word numbers
ssl a2,36-2 right justify byte index in A2
ex ebcget,a2 load ASCII character for EBCDIC
j ebcput go edit into output line
.
ebctl la,u a0,077 load ASCII question mark ?
ebcput a$qchr a0,,w edit character into output line
jgd r4,ebclup loop until all edited
lx x11,a5 restore return address
j 0,x11 return to caller
.
ebcget la,q1 a0,ebctbl,a3 execute table to translate EBCDIC
la,q2 a0,ebctbl,a3
la,q3 a0,ebctbl,a3
la,q4 a0,ebctbl,a3
PURE DATA
ASCII
BLKNR 'Block # & Length: & words&'
SCTM 'Sector&s&'
TRKM ' (Track &)&'
AFCM ' (& characters)&'
EOFENC ' - End of File mark&'
.
. EBCDIC to ASCII translate table (starts at 0100)
.
. This table uses UP-8582.1 as its reference
.
ebctbl ' ???'
'????'
'??].'
'<(+!'
'&???'
'????'
'??]$'
'*);^'
'-/??'
'????'
'??|,'
'%_>?'
'????'
'????'
'?\:#'
'@''="'
'?abc'
'defg'
'hi??'
'????'
'?jkl'
'mnop'
'qr??'
'????'
'?~st'
'uvwx'
'yz??'
'????'
'????'
'????'
'????'
'????'
'{ABC'
'DEFG'
'HI??'
'????'
'}JKL'
'MNOP'
'QR??'
'????'
'\?st'
'UVWX'
'YZ??'
'????'
'0123'
'4567'
'89??'
'????'
END