.TITLE WRITE 9 TRACK ASCII TO EBCDIC / / / FIRST PRINTING, FEBRUARY 1974 / / THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO / CHANGE WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED / AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. / DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPON- / SIBILITY FOR ANY ERRORS THAT MAY APPEAR IN THIS / DOCUMENT. / / THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FUR- / NISHED TO THE PURCHASER UNDER A LICENSE FOR USE ON / A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH / INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR / USE IN SUCH SYSTEM, EXCEPT AS MAY OTHERWISE BE PRO- / VIDED IN WRITING BY DIGITAL. / / DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY / FOR THE USE OR RELIABILITY OF ITS SOFTWARE ON EQUIP- / MENT THAT IS NOT SUPPLIED BY DIGITAL. / / COPYRIGHT (C) 1974, BY DIGITAL EQUIPMENT CORPORATION / / .EJECT / / EDIT # 8 / / COPYRIGHT 1971,1972 DIGITAL EQUIPMENT CORP., MAYNARD, MASS. / / MAGTAPE I/O HANDLER TASK 26 OCT 72 R. MCLEAN / / MTWRA9 WRITES 9 TRACK EBCDIC RECORDS TO MAGTAPE (MODES 2&3) / / / / .GLOBL MTWRA9,FINREQ,FLSREQ,WFMT,MTNODE,MTCAA,MTWCA,FMTDEN,FMTPAR .GLOBL UNTTMP,MTEOTT,ERM12,MTEVAM / / WCA 32 CAA 33 /WORD COUNT ADDRESS .TITLE PARAMETER DEFINITIONS / / / / / / PARAMETER DEFINITIONS / R1=101 R2=102 R3=103 R4=104 R5=105 POOL=240 /POOL DEQUE LIST HEAD PICK=120 /PICK A NODE PDVL=252 /PHYSICAL DEVICE DEQUE LIST HEAD NADD=107 /NODE ADD SNAM=123 /SEARCH FOR A NAME DQRQ=337 /DE-QUEUE A NODE FROM PDVL NODE ALAD=325 /ATTACH LUN AND DEVICE DLAD=332 /DETACH LUN AND DEVICE VAJX=342 /VALIDATE AND ADJUST X10=10 X11=11 X12=12 X13=13 / .INH=705522 .ENB=705521 ECLA=641000 / MTSF=707341 /SKIP ON ERROR FLAG OR MAGTAPE FLAG MTCR=707321 /SKIP ON TAPE CONTROL READY MTTR=707301 /SKIP ON TAPE TRANSPORT READY MTAF=707322 /CLEAR THE STATUS AND COMMAND REGISTERS, EF AND MTF /IF TAPE CONTROL READY. IF NOT READY CLEAR EF AND MTF ONLY MTVM=707302 /OR COMMAND REGISTER INTO AC 0-11 MTCM=707324 /OR AC 0-5,9-11 INTO COMMAND REGISTER LOAD 6-8 /INTO COMMAND REGISTER MTLC=707326 /LOAD AC 0-11 INTO COMMAND REGISTER MTVS=707342 /INCLUSIVELY OR STATUS REGISTER INTO AC 0-11 MTRS=707352 /READ THE CONTENTS OF STATUS REGISTER INTO AC 0-11 MTRC=707312 /READ THE CONTENTS OF COMMAND REGISTER INTO AC 0-11 MTGO=707304 /EXECUTE THE COMMAND REGISTER / EF=400000 /ERROR FLAG RW=200000 /TAPE REWINDING BT=100000 /BEGINNING OF TAPE IC=040000 /ILLEGAL COMMAND PE=020000 /PARITY ERROR FI=010000 /EOF ET=004000 /EOT RE=002000 /READ-COMPARE ERROR IL=001000 /RECORD LENGTH INCORRECT DL=000400 /DATA REQUEST LATE TB=000200 /BAD TAPE EP=000000+1 /EVEN PARITY OP=040000+1 /ODD PARITY CD=020000+1 /CORE DUMP MODE IG=010000 /INTER - RECORD GAP NP=000000 /MT NOP RI=001000 /REWIND RD=002000 /READ RC=003000 /READ - COMPARE WR=004000 /WRITE WF=005000 /WRITE END OF FILE SF=006000 /SPACE FORWARD SR=007000 /SPACE REVERSE IE=000400 /INTERRUPT ENABLE ID=000000 /INTERRUPT DISABLE D2=000000+1 /DENSITY 200 BPI D5=000100+1 /DENSITY 556 BPI D8=000200+1 /DENSITY 800 BPI D9=000300+1 /DENSITY 800 BPI 9 TRACK .TITLE WRITE 9 TRACK EBCDIC MTWRA9 0 DZM CNTA LAW -2 /SET UP COUNTER DAC COUNT LAC* UNTTMP /PICK UP THE UNIT NUMBER OF THE REQUEST PAX LAC* MTEOTT,X /PICK UP THE END OF TAPE FLAG SMA /EOT? JMP ERM21 /YES SET EVENT VARIABLE TO -21 LAC (MTWRA9) /PICK UP THE XR ADJUSTMENT AND (070000) /MASK OFF THE PAGE BITS TCA TAD* MTNODE /ADD IN THE ADDRESS OF THE REQUESTING NODE PAX LAC 10,X /PICK UP THE BUFFER ADDRESS DAC TEMP /SAVE IT FOR SECOND VALIDATE AND ADJUST DAC* (R3) /SET UP FOR VALIDATE AND ADJUST LAC* MTNODE DAC* (R2) CLA!IAC /VALIDATE ONLY 1 WORD DAC* (R4) PXA /SAVE XR DAC TMP JMS* (VAJX) /VALADATE AND ADJUST JMP ERM30 /PROTECT ERROR LAC* (R3) /PICK UP I/O ADDRESS IAC /POINT TO FIRST WORD OF WORD PAIR DAC* (X10) DAC* (X11) AAC -2 DAC* (X12) /SAVE POINTER TO THE HEADER WORD PAIR LAC (BUF-1) /PICK UP THE ADDRESS OF THE INTERNAL BUFFER DAC* (X13) /SAVE IT DAC* CAA /STORE IT IN THE MAGTAPE CURRENT ADDRESS POINTER DAC* MTCAA /SAVE IT IN CASE OF AN ERROR LAC* X12 /PICK UP THE HEADER TO DETERMINE THE WORD COUNT SWHA /MOVE THE WORD COUNT TO THE RIGHT HALF AND (177) /MASK OFF THE WORD COUNT AAC -1 /SUBTRACT 1 SINCE HEADER IS NOT TRANSFERRED TCA DAC WDCNT /SAVE THE WORD COUNT SMA /IS IT LEGAL? JMP ERM16 /NO RETURN -16 EVENT VARIABLE TCA CLL!RAL /MULTIPLY BY 2 TO FIND WORD COUNT DAC* (R4) /SET UP FOR SECOND VALIDATE AND ADJUST LAC TEMP DAC* (R3) /RESET CORE ADDRESS JMS* (VAJX) /VALIDATE AND ADJUST JMP ERM30 /PROTECT ERROR LAC TMP /RESTORE XR PAX DZM TEMP /CLEAR OUT TEMP STORAGE LAC 7,X /PICK UP THE MODE OF THE REQUEST SAD (3) /IS IT IMAGE? JMP IMAG /YES DECODE IMAGE CONVAN LAC* X10 /PICK UP THE FIRST WORD PAIR LRS 13 /RIGHT JUSTIFY FIRST CHARACTER JMS CONV /CONVERT THE CHARACTER LLS 7 /CONVERT THE NEXT CHARACTER JMS CONV /CONVERT THE SECOND CHARACTER LLS 7 /PICK UP THE FIRST HALF OF THE 3 CHARACTER AND (170) /MASK OFF THE RELEVANT BITS DAC TMP /SAVE THE BITS LAC* X10 /PICK UP THE NEXT WORD LRS 17 /MOVE THE USEFUL BITS TO 15-17 AND (7) /MASK OFF THE BITS XOR TMP /ADD THE FIRST HALF OF THE CHARACTER JMS CONV /CONVERT THE THIRD CHARACTER LLS 7 /PICK UP THE 4TH WORD JMS CONV /CONVERT IT LLS 7 /PICK UP THE 5TH CHARACTER JMS CONV /CONVERT IT ISZ WDCNT /IS THE WORD COUNT EXHAUSTED? JMP CONVAN /NO -- GO DO THE NEXT WORD PAIR FINIMG CLQ /YES LEFT JUSTIFY THE FINAL WORD LAC COUNT /IF THE COUNT 2 INDICATING 'TEMP' EMPTY? SAD (-2) JMP FIN /YES GO TRANSFER THE BUFFER TO TAPE LAC TEMP /PICK UP THE LAST CHARACTER SZA /SKIP IF LAST WORD EMPTY DAC* X13 /STORE THE LAST WORD FIN LAC CNTA /PICK UP THE WORD COUNT TCA /COMPLEMENT IT FOR MAGTAPE REGISTER DAC* WCA /STORE IN MAGTAPE WORD COUNT REGISTER DAC* MTWCA /SAVE IT IN CASE OF AN ERROR LAC* UNTTMP /PICK UP THE UNIT NUMBER PAX /SAVE IT IN XR ALS 17 /PUT IT IN BITS 0-2 FOR THE MAGTAPE UNIT NUMBER AND (700000) /MASKOFF UNIT LMQ /SAVE IT IN MQ TO FIND DENSITY AND PARITY LAC* FMTPAR,X /FIND THE PARITY SNA /IS IT DEFAULT PARITY? LAC (OP) /YES -- DEFAULT IS ODD PARITY OMQ /OR IN THE UNIT NUMBER LMQ /SAVE IT IN MQ LAC* FMTDEN,X /PICK UP THE DENSITY OMQ /OR IN UNIT NUMBER AND PARITY XOR (WR!IE) /OR IN WRITE COMMAND JMS* WFMT /REQUEST A TAPE MOTION LAC* MTEVAM /PICK UP THE STATUS OF THE TAPE REQUEST SMA /WAS IT OK? JMP* FINREQ /YES -- RETURN +1 EVENT VARIABLE AND (ET) /NO -- WAS IT END OF TAPE? SNA JMP* ERM12 /NO -- UNKNOWN ERROR LAC* UNTTMP /PICK UP THE UNIT NUMBER PAX DZM* MTEOTT,X /CLEAR THE EOT SWITCH LAC (4) /RETURN A STATUS OF +4 JMP* FLSREQ / IMAG LAC* X10 /DECODE AND WRITE IMAGE JMS CONV LAC* X10 JMS CONV ISZ WDCNT /FINISHED? JMP IMAG /NO CONTINUE JMP FINIMG /YES -- STORE LAST CHARACTERS / / CONV -- CONV CONVERTS 5/7 BIT ASCII / TO EBCDIC / CONV 0 AND (177) /MASK OFF 7 BITS SAD (177) /IS IT A RUBOUT? JMP RO /YES -- INSERT RUBOUT CODE SAD (175) /IS IT AN ALTMODE? JMP AM /YES -- INSERT AN ALTMODE SAD (137 /IS IT A BACK ARROW? JMP CONVR /YES -- INSET A BACK ARROW AAC -11 /FIRST 11 CHARACTERS ARE NULL PAX SPA!CLA / JMP* CONV /NOT LEGAL CHARACTER DELETE IT AAC 126 /IS THE HIGH END LEGAL? PAL CLA /CLEAR AC IN CASE IT IS LEGAL AXS 0 /CHECK FOR UPPER LIMIT SKP /LEGAL PICK UP FROM TABLE JMP* CONV /ILLEGAL RETURN LAC TBL,X /PICK UP THE EBCDIC CHARACTER SNA!CLL /IS IT A NULL CHARACTER? JMP* CONV /YES -- IGNORE IT CONVR ISZ COUNT /2 CHARACTERS FOUND? JMP CONVS /NO SET UP FOR NEXT TIME XOR TEMP DAC* X13 /YES -- STORE 2 CHARACTERS LAW -2 /RESET COUNTER DAC COUNT JMP* CONV /RETURN TO CALLER CONVS ALSS 10 /MOVE OVER 8 BITS FOR NEXT TIME DAC TEMP /SAVE VALUE ISZ CNTA /UPDATE TAPE WORD COUNT JMP* CONV /RETURN TO CALLER RO LAC (7) JMP CONVR AM LAC (47) JMP CONVR / ERM16 LAW -16 /ILLEGAL BUFFER SIZE JMP* FLSREQ /RETURN -16 TO USER / ERM21 LAW -21 /END OF TAPE REQUEST NOT HONORED JMP* FLSREQ /RETURN -21 TO USER ERM30 LAW -30 JMP* FLSREQ / TEMP 0 CNTA 0 TMP 0 COUNT 0 WDCNT 0 TBL 5 /TAB 45 /LINE FEED 13 /VERTICAL TAB 14 /FORM FEED 15 /CARRIAGE RETURN .BLOCK 22 100 /SPACE 132 /! 177 /" 173 /# 133 /$ 154 /% 120 /& 175 /' 115 /( 135 /) 134 /* 116 /+ 153 /, 140 /- 113 /. 141 // 360 /0 361 /1 362 /2 363 /3 364 /4 365 /5 366 /6 367 /7 370 /8 371 /9 172 /: 136 /; 114 /< 176 /= 156 /> 157 /? 174 /AMPERSAND 301 /A 302 /B 303 /C 304 /D 305 /E 306 /F 307 /G 310 /H 311 /I 321 /J 322 /K 323 /L 324 /M 325 /N 326 /O 327 /P 330 /Q 331 /R 342 /S 343 /T 344 /U 345 /V 346 /W 347 /X 350 /Y 351 /Z 115 /[ 0 135 /] 0 0 BUF .BLOCK 500 .END MTWRA9