PMTUP CSY/ U01 P€1_%NAM MTUP_)DECK-ID U01 MAG TAPE UTILITY_$SUMMARY-106_^1*_$MAGNETIC TAPE UTILITY PROCESSOR - CALLING ROUTINE (MSOS ONLY)_^1*_$CYBER 18 / 1700 COMPUTER SYSTEMS_^1*_$SMALL SYSTEMS DIVISION, LA JOLLA, CALIFORNIA_^1*_$COPYRIGHT CONTROL DATA CORPORATION 1976_^1*_]_^1***_"PURPOSE_^1*_$-------_^1*_$THIS CALLING ROUTINE IS NOT USED IF RUNNING UNDER RTOS_^1*_]_^1****_!*******************€€**********************************************_^1*_$ENTRY POINTS_^1****_!*****************************************************************_^1_%ENT MTUP_)ENTRY TO CALL IN MAG TAPE UTILITY PROCSR_^1****_!*****************************************************************_^1*_$EXTERNALS_^1****_!*****************************************************************_^1****_!******************€€***********************************************_^1*_$EQUIVALENCES_^1****_!*****************************************************************_^1_%EQU AMONI($F4)_"ADR OF MONITOR ENTRY_^1****_]_^1*_$MAGNETIC TAPE UTILITY PROCESSOR - MTUP_^1*_$LOADS MAIN PROGRAM USING GTFILE REQUEST_^1_%SPC 2_^1MTUP_!RTJ- (AMONI)_%GTFILE MONITOR REQUEST_^1FSTADD ADC $5A01_^1_%ADC 0_^1SUPTHD NUM 0_^€€1SUPSTA ADC $8C2_^1_%ADC 0_^1_%ADC TAPUTL_'START ADR FOR LOADING THE MAIN FILE_^1LEN_"ADC 0_^1_%ADC SNAME-FSTADD_^1_%ADC 0_^1_%ADC 0_^1*_]_^1BUSYCK LDA* SUPTHD_'WAIT FOR TRANSFER COMPLETE_^1_%SAZ 1_^1_%JMP* BUSYCK_^1_%LDA* SUPSTA_'CHECK FOR READ ERROR_^1_%SAP CORERQ_'NO ERROR - BEGIN PROGRAM_^1_%JMP- ($EA)_(ERROR - EXIT_^1SNAME ALF 3,MTUPFL_$FILE NAME_^1_%SPC 2_^1CORERQ€> CLR A_,GET CURRENT AVAILABLE JOB AREA_^1_%CLR Q_^1_%RTJ- (AMONI)_%GET BOUNDS_^1_%NUM $1600_(CORE REQUEST Q = (ED), A = (EC)_^1_%ADQ* LEN_*ADD LENGTH OF FILE TO LOWER BOUND_^1_%RTJ- (AMONI)_%SET BOUNDS_^1_%NUM $1600_(CORE REQUEST Q = (ED), A = (EC)_^1TAPUTL EQU TAPUTL(*)_$START OF MAIN PROGRAM_^1_%END MTUP_^__>PTAPUTL CSY/ U02 P€1_%NAM TAPUTL_'DECK-ID U02 MAG TAPE UTILITY_$SUMMARY-106_^1*_$MAGNETIC TAPE UTILITY PROCESSOR - MAIN PROGRAM_^1*_$CYBER 18 / 1700 COMPUTER SYSTEMS_^1*_$SMALL SYSTEMS DIVISION, LA JOLLA, CALIFORNIA_^1*_$COPYRIGHT CONTROL DATA CORPORATION 1976_^1*_]_^1***_"PURPOSE_^1*_$-------_^1*_$MAIN PROGRAM_^1*_]_^1****_!*****************************************************************_^1*_$ENT€€RY POINTS_^1****_!*****************************************************************_^1_%ENT WTOR_^1_%ENT TAPUTL_^1_%ENT MESAGE_^1_%ENT RMESS_^1_%ENT INBUF2_^1_%ENT SCCB_^1_%ENT RESTRT_^1_%ENT SCCBM1_^1_%ENT TTYDMB,TTYDM1_^1_%ENT STATIS,SYSERR_^1_%ENT LBYTE2_^1_%ENT COUNT1,COUNT2_^1_%ENT CIFLAG_'CONTROL INPUT FLAG (0 IF TTY)_^1_%ENT SBYTE,SETCNT,SETCT2_^1****_!********€€*********************************************************_^1*_$EXTERNALS_^1****_!*****************************************************************_^1_%EXT FNN_^1_%EXT GETLOC,SCAN,PRINT,LBYTE_^1****_!*****************************************************************_^1*_$EQUIVALENCES_^1****_!*****************************************************************_^1****_]_^1_%EXT IUP_*JO€€B PROCESSOR CONTROL INPUT LU_^1_%ENT CIN,COUT_^1_%EQU LPMSK(2)_^1_%EQU ZERO($22)_^1_%EQU ONEBIT($23)_^1_%EXT DMBTM1,RELBUF_^1_%SPC 4_^1TAPUTL EQU TAPUTL(*)_^1_%LDA+ IUP_*GET JOB CONTROL LU_^1_%TRA Q_^1_%AND- LPMSK+8_^1_%QLS 4_,Q15 = INDIRECT LU INDIC._^1_%LLS 16_+INTERCHANGE A AND Q_^1_%SAP 1_,SKIP IF NOT INDIRECT LU_^1_%LDQ- (ZERO),Q_$GET ACTUAL LU_^1_%TRQ A_^1_%ADQ- O€€NEBIT+12_#SET ASCII MODE BIT_^1_%STQ* CIN_*SAVE CONTROL INPUT LU_^1_%LDQ- $FC_*Q = COMMENT OUTPUT LU_^1_%SUB- $FD_*CHECK IF CONTROL INPUT = COMMENT INPUT LU_^1_%STA* CIFLAG_'SAVE CONTROL INPUT FLAG_^1_%SAZ 1_,SKIP IF COMMENT LU IN USE_^1_%LDQ- $FB_*Q = STANDARD PRINT LU_^1_%ADQ- ONEBIT+12_#SET ASCII MODE BIT_^1_%STQ* COUT_)SAVE OUTPUT LU_^1_%SPC 2_^1_%ENA 4_^1_%RTJ SETCNT_^1CNT€€RST NUM 0_^1_%LDA =XDMBTM1_^1_%STA- $FF_^1TAPRST EQU TAPRST(*)_^1_%LDQ- 1,I_^1_%INQ -1_+CLEAR DMBS ON INITIAL ENTRY AND RESTART AFTER_^1_%CLR A_^1_%EQU IOBFLG(1)_^1_%EQU ABUFFP(6)_^1_%STA- IOBFLG,Q_$CLEAR IOBFLG_^1_%LDA- ABUFFP,Q_$RELEASE BUFFER IF NECESSARY_^1_%SAZ TAPR2_(IF ZERO NOTHING TO RELEASE_^1_%RTJ RELBUF_^1TAPR2 EQU TAPR2(*)_^1_%RAO- $FF_*INC INDEX TO DMB TABLE€€_^1_%RAO* CNTRST_'DONE?_^1_%SOV 1_^1_%JMP* TAPRST_'KEEP CLEARING_^1_%RTJ* FMTMSG_'WRITE SIGN ON_^1_%ADC MESS1_^1RESTRT EQU RESTRT(*)_#RENTRY POINT_^1_%RTJ WTOR_)GET NEXT CONTROL STATEMENT_^1_%ADC MESS2_^1_%RTJ FNN_^1_%STA* FNCALL_'FUNCTION ROUTINE ADDRESS IN A_^1_%SAM INVAL_(IF INVALID FUNCTION_^1_%RTJ* (FNCALL)_$CALL THE FUNCTION IF A IS NOT NEGATIVE_^1INVAL EQU INVAL(*)_€€^1_%JMP* RESTRT_^1FNCALL NUM 0_,HOLD ADDRESS FOR FUNCTION CALL_^1_%SPC 4_^1**** SCAN CONTROL BLOCK ****_^1SCCB_!ADC INPBUF_'ADDRESS OF INPUT BUFFER_^1_%ADC IMAXLN_'WORD SIZE OF INPUT BUFFER_^1_%NUM 0_,SNCA - CHAR. ADDRS. - NEXT IN BUFFER_^1_%NUM 0_,SCPHR - CHAR. ADDRESS OF CUR. PHRASE_^1_%NUM 0_,SCPHL - LENGTH OF CURRENT PHRASE_^1_%NUM 0_,SCFLG - FIRST PHRASE CHECK_^1_%NU€€M 0_,SCNUM - HEX. NO. ASSOC. WITH CURR. PHRASE_^1_%NUM 0_,EOS - ADDRS OF END OF SCAN PROCESSING_^1SCCBM1 EQU SCCBM1(SCCB-1)_^1_%EQU IMAXLN(40)_^1_%EQU SAINP(1)_^1_%EQU SINPLN(SAINP+1)_^1_%EQU SNCA(SINPLN+1)_^1_%EQU SCPHR(SNCA+1)_^1_%EQU SCPHL(SCPHR+1)_^1_%EQU SCFLG(SCPHL+1)_^1_%EQU SCNUM(SCFLG+1)_^1_%EQU EOS(SCNUM+1)_^1_%SPC 4_^1****** COMMUNICATION ROUTINES ****_^1_€€%SPC 4_^1************************************************_^1* RMESS- READ A MESSAGE FROM THE TTY_)*_^1* CALLING SEQUENCE: RTJ* RMESS_-*_^1*_4ADC_!SCCB-1_,*_^1* SCCB IS THE ADDRESS OF A PARAMETER LIST_#*_^1* CONTAINING POINTERS TO INPUT BUFFERS ETC._!*_^1******************************************_^1CIN_"NUM $8FD_^1COUT_!NUM $8FC_^1CIFLAG NUM 0_,CONTROL INPUT FLAG (0 IF TTY€€)_^1_%SPC 2_^1RMESS NOP_]_^1_%LDA* CIN_*READ REQUEST_^1_%STA* TTRCOD_^1_%LDQ* (RMESS)_%GET ADDR OF SCAN CONTROL BLOCK_^1_%LDA- SAINP,Q_%GET ADDR TO PUT RECORD_^1_%STA* ABLOK_^1_%STA* AREC_^1_%LDQ* ATYDM1_^1_%RTJ GETLOC_'READ RECORD_^1_%LDQ* LREC_)COMPUTE LAST WORD ADDRESS_^1_%QRS 1_^1_%ADQ* AREC_^1_%INQ -1_^1_%SET A_,STORE END OF SCAN MARKER_^1_%STA- 1,Q_^1_%LDQ* (RMESS)_^1_%€€LDA* AREC_^1_%ALS 1_^1_%STA- SNCA,Q_'PUT ADDR OF RECORD IN SCCB_^1_%LDA* TTYBF_(RESTORE TTYDMB_^1_%STA* ABLOK_^1_%STA* AREC_^1_%CLR A_^1_%STA* LBLOK_^1_%LDA* COUT_^1_%STA* TTRCOD_^1_%RAO* RMESS_^1_%JMP* (RMESS)_%RETURN_^1TTYDMB NUM $C000,0,0,0_^1TTRCOD NUM $8FC_^1TTYBF ADC TTYBUF_^1_%NUM 0,72,72_^1ABLOK ADC TTYBUF_^1LBLOK NUM $0_^1AREC_!ADC TTYBUF_^1LREC_!NUM 0,0,0,0,0€€,0,0_^1TTYBUF BZS TTYBUF(8)_^1INBUF2 BZS INBUF2(6)_#FOR RETYPING OF PARAMETERS_^1INPBUF BZS INPBUF(36)_"MAIN BUFFER FOR ENTRY OF PARAMETERS_^1TTYDM1 EQU TTYDM1(TTYDMB-1)_^1*****************************_^1_%EQU ABUFF(1)_^1_%EQU LENGTH(2)_^1_%EQU MLN(2)_^1_%EQU RLN(3)_^1_%SPC 4_^1*******************************************_^1* FMTMSG- FORMATS MESSGE TO TTY USING_"*_^1*_*PRI€€NT ROUTINE_0*_^1*******************************************_^1_%SPC 4_^1_%ENT FMTMSG_^1FMTMSG NOP 0_,ENTRY_^1_%STA* DTLSTA_'USE A AS DATA LIST POINTER IF USED_^1*_]_^1_%LDA* COUT_)ENSURE OUTPUT DEVICE IS USED FOR PRINT_^1_%STA* TTRCOD_^1_%LDA* (FMTMSG)_$RETRIEVE FORMAT ADDRESS_^1_%STA* FMTADR_^1_%SPC 2_^1*_!CALL PRINT_^1_%SPC 2_^1_%RTJ* (XPRINT)_^1FMTADR NUM 0_^1DTLSTA NUM 0€€_^1ATYDM1 ADC TTYDM1_^1_%RAO* FMTMSG_'INCREMENT FOR RETURN_^1_%JMP* (FMTMSG)_$RETURN_^1_%SPC 4_^1************************************************_^1*_M*_^1* WTOR - WRITES MESSAGE TO OPERATOR AND_%*_^1*_)ACCEPTS RESPONSE._2*_^1*_#CALL - RTJ WTOR_^1*_*(P+1) = SCCB-1_4*_^1*_M*_^1************************************************_^1_%SPC 4_^1WTOR_!NOP_]_^1_%LDQ* (WTOR)_'GET ADDR OF M€€ESSAGE_^1_%STQ* WTMSG_^1_%LDQ* CIFLAG_'CHECK CONTROL INPUT FLAG_^1_%SQN RDRESP_'SKIP IF CONTROL I/P NOT TTY_^1_%RTJ* FMTMSG_'WRITE MASSAGE_^1WTMSG ADC $0_^1RDRESP RTJ* RMESS_(READ CONTROL INPUT STATEMENT_^1RDPRMA ADC SCCB-1_^1_%LDQ* RDPRMA_^1_%STQ- $FF_^1_%RTJ SCAN_)SCAN RESPONSE_^1_%RAO* WTOR_^1_%JMP* (WTOR)_'RETURN_^1_%SPC 4_^1***********************************************€€**_^1*_P*_^1* MESAGE - WRITE FILE(S) NOT OPEN ON TTY_%*_^1*************************************************_^1_%SPC 4_^1MESAGE RTJ* FMTMSG_'WRITE MESSAGE_^1_%ADC MESG1_^1_%JMP RESTRT_^1************************_^1* SYSTEM ERROR ROUTINE *_^1************************_^1_%SPC 4_^1SYSERR NOP $0_^1_%CLR Q_^1_%LLS 11_+W,C,OR S?_^1_%STQ* WTOR_)USE IT AS TEMP STORAGE_^1_%ALS 5_,ERRO€€R NUMBER_^1_%STA* ERNUM_^1_%LDA* CODLST,Q_^1_%STA* CODE_^1_%LDA COUT_)MESSAGE OUTPUT LU_^1_%STA* TTRCOD_^1_%RTJ* (XPRINT)_^1_%ADC FORSMT_^1_%ADC ERDATA_^1_%ADC TTYDM1_^1_%LDQ* WTOR_^1_%JMP* RETAB,Q_^1RETAB EQU RETAB(*)_^1_%JMP* (SYSERR)_$RETN TO CALLER_^1_%JMP* TSCOPE_^1_%JMP* TAPUT_^1TSCOPE RTJ- ($F4)_(EXIT TO JOB PROCESSOR_^1_%ADC $A00_^1TAPUT JMP RESTRT_^1ERDATA EQU ER€€DATA(*)_^1_%ALF 2,****_^1CODE_!NUM $0_+W,C,OR S_^1ERNUM NUM $0_+ERROR NUMBER_^1CODLST EQU CODLST(*)_^1_%NUM $5700_^1_%NUM $4300_^1_%NUM $5300_^1FORSMT ALF 7,4A1X1A3D4-4A;_^1XPRINT ADC PRINT_^1*********************************_^1* STATISTICS PRINTING ROUTINE_!*_^1*********************************_^1_%SPC 4_^1_%EXT INPUT_^1_%EXT OUTPUT_^1_%EXT PRNDMB_^1_%EXT PRNM1_^1TT€€YM1 ADC TTYDM1_^1INP_"ADC INPUT_^1OUT_"ADC OUTPUT_^1PRT_"ADC PRNDMB_^1PRTM1 ADC PRNM1_^1_%SPC 4_^1STATIS NOP_]_^1_%LDA* TTYM1_^1_%STA* OUTDMB_^1_%LDA* (PRT)_^1_%SAP NEXT1_^1_%LDA* PRTM1_^1_%STA* OUTDMB_^1_%LDA* STFOLS_^1_%LDQ* PRT_^1_%RTJ* PRNT_^1NEXT1 LDA* (INP)_^1_%SAP NEXT2_^1_%LDA* STFOLS+1_^1_%LDQ* INP_^1_%RTJ* PRNT_^1NEXT2 LDA* (OUT)_^1_%SAP NEXT3_^1_%LDA* STFOLS€€+2_^1_%LDQ* OUT_^1_%RTJ* PRNT_^1_%LDA* (PRT)_^1_%SAP NXTNXT_^1_%LDA* STFOLS+3_^1_%RTJ* PRNT_)ISSUE PAGE EJECT IF PRINT FILE OPEN_^1NXTNXT CLR A_^1_%LDQ* PRT_^1_%STA- 13,Q_^1NEXT3 JMP* (STATIS)_^1PRNT_!NOP $0_^1_%STA* STFOST_^1_%INQ 13_^1_%STQ* STDATA_^1_%RTJ* (XPRINT)_^1STFOST ADC $0_^1STDATA ADC $0_^1OUTDMB ADC $0_^1_%JMP* (PRNT)_^1STFOLS ADC STFOR1_^1_%ADC STFOR2_^1_%AD€€C STFOR3_^1_%ADC STFOR4_^1STFOR1 ALF 11,E5D14C LINES PRINTED;_^1STFOR2 ALF 20,5D13C INPUT BLOCKS/5D14C INPUT RECORDS;_^1STFOR3 ALF 21,5D14C OUTPUT BLOCKS/5D15C OUTPUT RECORDS;_^1STFOR4 ALF 1,E*_^1MESS1 ALF 10,16C**TAPE UTILITY**;_^1MESS2 ALF 6,8C*NEXT: ;_^1MESG1 ALF 10,16CFILE(S) NOT OPEN;_^1_%SPC 4_^1_%SPC 4_^1***********************************_^1* SBYTE - STORE A €€BYTE IN BUFFER *_^1***********************************_^1_%SPC 4_^1SBYTE NOP 0_,ENTRY (Q) = CHARACTER ADDRESS_^1_%QLS 15_+(A) = CHARACTER RIGHT JUSTIFIED_^1_%INQ -1_^1_%STA* TEMPX_^1_%LDA- I_^1_%STA* TEMPX1_'STORE I REGISTER_^1_%TRQ A_^1_%AND- LPMSK+15_$REMOVE UPPER/LOWER FLAG FROM ADDRESS_^1_%STA- I_,AND STORE ADDRESS_^1_%LDA- 1,I_*GET WORD_^1_%SQM SBYTE1_^1_%ALS 8_^1SBY€€TE1 AND =N$FF00_^1_%EOR* TEMPX_^1_%SQM SBYTE2_^1_%ALS 8_^1SBYTE2 STA- 1,I_*GO STORE THE RESULT_^1_%QLS 1_,RETURN Q TO ORIGINAL STATE_^1_%INQ 3_^1_%LDA* TEMPX1_'RESTORE I REGISTER_^1_%STA- I_^1_%JMP* (SBYTE)_%RETURN WITH Q = TO NEXT STORE ADDRESS_^1TEMPX NUM 0_^1TEMPX1 NUM 0_^1_%SPC 4_^1********************************_^1* SETCNT - ROUTINE TO COUNT_!*_^1*_*USING THE OVFL I€€ND *_^1* CALLING SEQUENCE_+*_^1*_$RTJ SETCNT_-*_^1*_$NUM 0 WORD TO USE FOR *_^1*_,COUNTING BY RAO* *_^1*_#(A) = MAXIMUM COUNT_$*_^1********************************_^1_%SPC 4_^1SETCNT NOP 0_,ENTRY_^1SETCT2 EQU SETCT2(SETCNT)_^1_%EOR =N$7FFF_%COMPUTE INVERSE COUNT AS OVERFLOW INDICATOR_^1_%INA 1_^1_%STA* (SETCNT)_^1_%SOV 0_,CLEAR THE OVERFLOW INDICATOR_^1_%RAO* SETCNT_^1_%JM€€P* (SETCNT)_$RETURN_^1_%ENT CLRRGN_^1_%SPC 4_^1******************************_^1* CLRRGN - CLEARS CORE_%*_^1*_"CALLING SEQUENCE_'*_^1*_"(Q) = FWA - 1_**_^1*_"(A) = NUMBER OF WORDS_!*_^1*_#RTJ CLRRGN_^1******************************_^1_%SPC 4_^1CLRRGN NOP 0_,ENTRY_^1_%RTJ* SETCNT_^1CLRCNT NUM 0_^1_%STQ* SETCNT_'SAVE ORIGINAL VALUE OF Q_^1_%CLR A_^1CLRLOP EQU CLRLOP(*)_^1_%STA€€- 1,Q_^1_%INQ 1_^1_%RAO* CLRCNT_^1_%SOV CLREXT_^1_%JMP* CLRLOP_^1CLREXT EQU CLREXT(*)_^1_%LDQ* SETCNT_'RESTORE Q_^1_%JMP* (CLRRGN)_$RETURN_^1_%SPC 4_^1*** THIS ROUTINE IS CALLED BY THE FUNCTION ROUTINE ***_^1*** TO CONTINUE THE SCAN OF THE FUNCTION STATEMENT ***_^1*** AND TO SET UP STANDARD PARAMETERS_-***_^1_%ENT SPARM,SCFNT,SRCNT_^1_%EXT PSRCH,SCAN_^1_%ENT STNDMP_^1_%EX€€T INPM1,OUTM1,FPARM_^1W1_#EQU W1(1)_^1W2_#EQU W2(2)_^1_%EQU DEQU5(6)_^1_%EQU DEQU6(DEQU5+1)_^1_%EQU DEQU7(DEQU6+1)_^1_%ENT FCOUNT,RCOUNT_^1_%SPC 4_^1_%EXT RETYPE_^1SPARM NOP 0_,ENTRY_^1_%LDA* (SPARM)_%SET I REGISTER EQUAL TO SCCB-1_^1_%INA -1_^1_%STA- $FF_^1_%RAO* SPARM_(SET UP FOR NEXT PARAMETER_^1SPARM1 RTJ SCAN_)SCAN A PHRASE_^1_%SAP SPCON_(CONTINUE- NOT END OF SCA€€N_^1SPARM2 EQU SPARM2(*)_^1_%RAO* SPARM_(INCREMENT RETURN ADDRESS_^1_%JMP* (SPARM)_%EXIT TO END OF PARAM. ROUTINE_^1SPCON EQU SPCON(*)_^1_%LDA* (SPARM)_^1_%STA* SPARM3_^1_%RTJ PSRCH_^1SPARM3 NUM 0_,ARS. OF TBL TO SEARCH_^1_%STA* SPRTN+1_%SAVE ADDR IF PRESENT_^1_%SAP SPRTNX_'CALL PROPER ROUTINE_^1_%RTJ RETYPE_^1_%SAP RTSP1_^1_%JMP* SPARM1_'NEGATED PARM_^1RTSP1 EQU RTSP1(*€€)_^1_%JMP* SPCON_^1SPRTNX EQU SPRTNX(*)_^1_%LDQ* IDMBM1_^1SPRTN RTJ+ 0_,*MODIFIED ADDRESS FOR ROUTINE PROCESSING_^1_%JMP* SPARM1_'GO PROCESS NEXT PARAM._^1*****************************************************_^1*****************************************************_^1SCFNT NOP 0_,ENTRY_^1_%LDA- DEQU5,I_%IS SCFLG=0_^1_%SAN SCFER1_'NO SKIP (ERROR)_^1_%LDA- DEQU6,I_%SCNUM=0_^1_%SA€€N SCF1_)OK - SKIP_^1SCFER1 ENA W1_^1_%RTJ SYSERR_^1_%JMP* SCF2_^1SCF1_!STA* FCOUNT_^1SCF2_!JMP* (SCFNT)_%ECIT_^1*****************************************************_^1FCOUNT NUM 0_^1RCOUNT NUM 0_^1*********************************************************_^1SRCNT NOP 0_,ENTRY_^1_%LDA- DEQU5,I_%IS SCFLG = 0_^1_%SAN SRCER1_^1_%LDA- DEQU6,I_%SCNUM=0_^1_%SAN SRC1_)OK - SKIP_^1€€SRCER1 ENA W2_^1_%RTJ SYSERR_^1_%JMP* SRC2_)EXIT_^1SRC1_!STA* RCOUNT_^1SRC2_!JMP* (SRCNT)_%EXIT_^1*******************************************************_^1IDMBX ADC INPM1_^1IDMBM1 ADC INPM1_^1ODMBM1 ADC OUTM1_^1_%SPC 4_^1********************************************_^1*_I*_^1* COUNT1 - COUNT NUMER OF RECORDS TO_$*_^1*_*PROCESS._6*_^1*****************************************€€***_^1_%SPC 2_^1COUNT1 NOP $0_^1_%LDA* RCOUNT_^1_%SAZ COUT1X_'RCOUNT=0_^1_%SAM COUT1X_'RCOUNT=NEGATIVE_^1_%INA -1_^1_%STA* RCOUNT_^1COUT1X JMP* (COUNT1)_^1_%SPC 4_^1*********************************************_^1*_J*_^1* COUNT2 - COUNT NUMBE OF FILES TO PROCESS *_^1*********************************************_^1_%SPC 2_^1COUNT2 NOP $0_^1_%LDA* FCOUNT_^1_%SAZ COUT2X_^1_%€€INA -1_^1_%STA* FCOUNT_^1COUT2X JMP* (COUNT2)_^1_%SPC 4_^1***********************************************_^1*_L*_^1* LBYTE2 - CAALS LBYTE TO STORE CHARACTER_"*_^1*N_)AND INCREMENTS BUFFER POINTER_#*_^1***********************************************_^1_%SPC 2_^1LBYTE2 NOP $0_^1_%LDQ* (LBYTE2)_^1_%RTJ LBYTE_^1_%STQ* (LBYTE2)_^1_%RAO* LBYTE2_^1_%JMP* (LBYTE2)_^1_%SPC 4_^1******€€*****************************_^1* ROUTINE TO SET UP STANDARD PARMS*_^1***********************************_^1_%SPC 4_^1_%EXT DUIND_^1STNDMP NOP 0_,ENTRY TO STNDMP_^1_%LDA* XDUIND_^1_%INA 1_^1_%CLR A_^1_%SOV 1_,IF DUMP NOT PRESENT_^1_%STA* (XDUIND)_$CLEAR DUMP INDEX_^1_%STA* FCOUNT_^1_%LDQ* IDMBM1_^1_%LDA- RECCNT,Q_$GET NO. OF RECORDS PROCESSED_^1_%SAZ NOCLEAR_%FILE JUST OPENE€€D DONT CLEAR SELECTION_^1_%CLR A_^1_%STA- ASLCT1,Q_^1_%STA- ASLCT2,Q_^1_%STA- ASLCT3,Q_^1NOCLEA EQU NOCLEAR(*)_^1_%SET A_^1_%STA* RCOUNT_^1_%RTJ* SPARM_^1_%ADC SCCB_^1_%ADC FPARM_^1_%NOP 0_^1_%LDA* IDMBM1_^1_%STA- $FF_*SET I TO POINT TO INPUT DMB_^1_%LDQ* ODMBM1_^1_%LDA- ASLCT1,I_^1_%STA- ASLCT1,Q_^1_%LDA- ASLCT2,I_^1_%STA- ASLCT2,Q_^1_%LDA- ASLCT3,I_^1_%STA- ASLCT3,Q_^1_%JMP€ͺ* (STNDMP)_$RETRN_^1XDUIND ADC DUIND_^1ASLCT1 EQU ASLCT1($14)_^1ASLCT2 EQU ASLCT2(ASLCT1+1)_^1ASLCT3 EQU ASLCT3(ASLCT2+1)_^1RECCNT EQU RECCNT(15)_^1_%END TAPUTL_^__ͺPFNN CSY/ U03 P€1_%NAM FNN_*DECK-ID U03 MAG TAPE UTILITY_$SUMMARY-106_^1*_$PROCESSES FIRST CHAR. PHRASE OF CONTROL STMNT._^1*_$CYBER 18 / 1700 COMPUTER SYSTEMS_^1*_$SMALL SYSTEMS DIVISION, LA JOLLA, CALIFORNIA_^1*_$COPYRIGHT CONTROL DATA CORPORATION 1976_^1*_]_^1***_"PURPOSE_^1*_$-------_^1*_]_^1*** PURPOSE OF ROUTINE: TO PROCESS FIRST CHAR. ***_^1*** PHRASE OF A CONTROL STATEMENT; TO DETERM€€INE***_^1*** THE FUNCTION; AND TO SET THE NECESSARY_#***_^1*** CONTROL BLOCK PARAMETERS._2***_^1_%ENT FNN,LBYTE,LWORD_^1*_]_^1****_!*****************************************************************_^1*_$ENTRY POINTS_^1****_!*****************************************************************_^1_%ENT OPADR1_^1_%ENT PSRCH_^1_%ENT FNTAB,FPARM,OPTAB,FNADR,FPADR,OPADR_^1****_!******€€***********************************************************_^1*_$EXTERNALS_^1****_!*****************************************************************_^1****_!*****************************************************************_^1*_$EQUIVALENCES_^1****_!*****************************************************************_^1****_]_^1_%EXT DUMP,COPY,VERIFY,INIT,EXIT,PRINTI_^1_%EXT FMDMP,SU€€DMP,FTN1_^1_%EXT PNAM,TNAM,SNAM,ONAM_^1_%EXT REWND,UNLOD,LEAVE,EOV_^1_%EXT SETNL,SETVBR,SETVR,SEFBR,SETFR,SETUR,SETBR_^1_%EXT RETYPE_^1_%EXT SCAN,SETSF,SETRL,SETB,SETE,SETA_^1_%EXT OPENIO,CLOSIO,SETBLK_^1_%EXT SHDMP,SCDMP,SRCNT,SCFNT,LNC,SETSL,SETBL_^1_%EXT BSPACE_^1_%EXT SDATE_^1_%EXT EDATE_^1FNN_"NOP $0_^1_%SAM FNERR_(IF END OF SCAN ERROR_^1FNN2_!RTJ* PSRCH_(SEARCH TA€€BLES_^1_%ADC FNTAB_^1_%SAP FEX1_)VALUE IS A FUNCTION ROUTINE_^1FNERR EQU FNERR(*)_^1_%RTJ RETYPE_^1_%SAM FEX1_^1_%JMP* FNN2_^1FEX1_!JMP* (FNN)_(EXIT_^1_%EQU FNEQ4(4)_^1_%EQU FNEQ5(5)_^1_%EQU FNEQ6(6)_^1_%EQU FNEQ8(8)_^1_%EQU LPMSK(2)_^1_%SPC $4_^1*******************************************************_^1*** LBYTE LOADS THE A-REGISTER WITH AN 8-BIT BYTE ****_^1*********€€**********************************************_^1LBYTE NOP 0_,ENTRY_^1_%QLS 15_+DIVIDE CHAR ADDR BY 2_^1_%INQ -1_+DECREMENT FOR INDEXING_^1_%STQ* LBTEMP_^1_%TRQ A_^1_%AND- LPMSK+15_$REMOVE UPPER/LOWER FLAG_^1_%TRA Q_^1_%LDA- 1,Q_*GET FIRST WORD_^1_%LDQ* LBTEMP_'RESTORE FLAG TO Q_^1_%SQM LOWER_(FIRST CHAR. IS IN LOWER 8-BITS_^1_%ARS 8_,GET TO 8-BITS(FIRST CHAR.)_^1LOWER AND€€* FMASK_(MASK OFF TOP 8-BITS_^1_%QLS 1_,RESET CHAR. ADDRESS_^1_%INQ 3_^1_%JMP* (LBYTE)_%EXIT- A REG. HAS CHAR._^1LBTEMP NUM 0_,TEMPORARY STORAGE_^1_%SPC 4_^1**************************************************_^1*** LWORD LOADS THE A-REGISTER WITH TWO 8-BIT BYTES ***_^1*******************************************************_^1LWORD NOP 0_,ENTRY_^1_%RTJ* LBYTE_(GET A CHAR_^1_%AL€€S 8_,MOVE TO UPPER 8-BITS AND SAVE_^1_%STA* LW1_^1_%RTJ* LBYTE_(GET ANOTHER_^1_%EOR* LW1_*COMBINE TWO CHARS_^1_%JMP* (LWORD)_^1LW1_"NUM 0_^1***********************************************_^1*** PSRCH SEARCHS A PARAMETER TABLE FOR A ****_^1*** MATCHING ENTRY AND RETURNS THE ADDRS. ****_^1*** OF THE PARAMETER ROUTINE TO PROCESS_"****_^1PSRCH NOP 0_,ENTRY_^1_%LDA* (PSRCH)_^1_%ST€€A* PSRCH1_^1_%LDQ- FNEQ4,I_%GET CHAR ADDR OF CURRENT PHRASE_^1_%RTJ* LBYTE_(GET A CHARACTER_^1_%STA* CHAR_)SAVE IT_^1_%ENQ 1_,SET Q TO BYPASS ADDRESS TABLE POINTER_^1PCHK_!LDA* CHAR_)RELOAD CHAR._^1_%EOR* (PSRCH1),Q_^1_%SAM PEXIT2_'IF DONE GET OUT WITH A SET TO IMPLY NOT FOUND_^1_%SAN PCON_)NO MATCH-CONTINUE CHECKING_^1PEXIT EQU PEXIT(*)_^1_%STQ* PQHOLD_'SAVE INDEX_^1_%ADQ* (P€€SRCH1)_$COMPUTE TABLE ADDRESS OF ROUTINE ADDRESS_^1_%LDA- 1,Q_*OBTAIN FUNCTION ROUTINE ADDRSS IN A_^1_%LDQ* PQHOLD_'RESTORE INDEX_^1PEXIT2 RAO* PSRCH_(INCREMENT RETURN ADDR BY 1_^1_%JMP* (PSRCH)_%EXIT TO CALLER_^1PCON_!AND* FMASK_(MASK OFF TOP 8 BITS_^1_%SAN PCON1_(CHECK FOR POSIBLE 2 CHARACTER CODE_^1_%LDA- FNEQ5,I_%CHECK SCAN LENGTH_^1_%INA -1_+FOR GREATER THAN ZERO_^1_%SAN PC€€ON2_(NO-SKIP_^1PCON1 INQ 1_,INCREMENT INDEX FOR NEXT CHAR_^1_%JMP* PCHK_)GO TRY AGAIN_^1PCON2 STQ* PQHOLD_'SAVE Q-REG._^1_%LDQ- FNEQ4,I_%GET CHAR ADDRS OF PHRASE_^1_%RTJ* LWORD_(GET TWO CHARS._^1_%ALS 8_,SHIFT CHARS_^1_%LDQ* PQHOLD_'RELOAD INDEX_^1_%SUB* (PSRCH1),Q_"CHAR MATCH_^1_%SAN PCON4_(NO-SKIP_^1_%JMP* PEXIT_(YES-GO GET ADDR._^1PCON4 EQU PCON4(*)_^1_%JMP* PCON1_(NO MAT€€CH_^1PQHOLD NUM 0_^1CHAR_!NUM 0_^1PSRCH1 NUM 0_^1FMASK NUM $FF_*MASK_^1_%SPC 4_^1FNTAB EQU FNTAB(*)_^1_%ADC FNADR-2_%ADDRESS OF ASSOCIATED POINTER TABLE_^1_%NUM $5544_(*DU*_!DUMP ROUTINE CHARACTERS_^1_%NUM $4F43_(*CO*_^1_%NUM $4556_(*VE*_^1_%NUM $4E49_(*IN*_^1_%NUM $5845_(*EX*_^1_%NUM $5250_(*PR*_^1_%NUM $504F_(OP_^1_%NUM $4C43_(:CL*_^1_%ALF 1,SB_'*BS*_^1_%ALF 1,€€DS_(SET SYSTEM DATE_^1_%ALF 1,DE_(SET LABEL EXPIRATION DATE_^1_%NUM $FFFF_(*END********************_^1_%SPC 4_^1FPARM EQU FPARM(*)_^1_%ADC FPADR-2_%ADDRESS OF ASSOCIATED POINTER TABLE_^1_%ALF 1,SU_'USASCI CONTROL CHARACTERS FOR PRINTI_^1_%ALF 1,ST_'PRINTI TAPE SCOPE LISTABLES_^1_%NUM $4D46_(*MF*_^1_%NUM $4655_(*FU*_^1_%NUM $0048_(* H*_^1_%NUM $0043_(* C*_^1_%NUM $4352_€€(*RC*_^1_%NUM $4346_(*CF*_^1_%NUM $0052_(* R*_^1_%NUM $4E55_(*UN*_^1_%NUM $004C_(* L*_^1_%NUM $4F45_(*EO*_^1_%ALF 1,NP_$PNAM_^1_%ALF 1,NT_$TNAM_^1_%ALF 1,NS_$SNAM_^1_%ALF 1,AN_$NAM_^1_%NUM $FFFF_(*END***********************_^1_%SPC 4_^1OPTAB EQU OPTAB(*)_^1_%ADC OPADR-2_%ADDRESS OF ASSOCIATED POINTER TABLES_^1_%NUM $4C53_(*LS*_^1_%NUM $4C42_(*LB*_^1_%NUM $4C4E_(*LN€€*_^1_%NUM $4256_(*BV*_^1_%NUM $0056_(* V*_^1_%NUM $4246_(*BF*_^1_%NUM $0046_(* F*_^1_%NUM $0055_(* U*_^1_%NUM $5242_(*RB*_^1_%NUM $4653_(*FS*_^1_%NUM $424C_(*BL*_^1_%NUM $524C_(*RL*_^1_%NUM $434C_(*LC*_!SET LINE COUNT FOR PRINT_^1_%NUM $534C_(*LS*_!SET LINE SIZE FOR PRINT_^1_%NUM $0042_(* B*_^1_%NUM $0045_(* E*_^1_%NUM $0041_(*A*_^1_%ALF 1,NP_'PNAM_^1_%ALF 1,NT_'TNA€€M_^1_%ALF 1,NS_'SNAM_^1_%ALF 1,AN_'ONAM_^1_%NUM $FFFF_(*END***************************_^1***********************************************************_^1FNADR ADC DUMP_)****************************_^1_%ADC COPY_^1_%ADC VERIFY_'*** FUNCTION(FNN) ***_^1_%ADC INIT_)*** ROUTINE_'***_^1_%ADC EXIT_)*** ADDRESSES ****_^1_%ADC PRINTI_^1_%ADC OPENIO_^1_%ADC CLOSIO_^1_%ADC BSPACE€€_^1_%ADC SDATE_(SET SYSTEM DATE_^1_%ADC EDATE_(SET LABEL EXPIRATION DATE_^1***********************************************************_^1FPADR EQU FPADR(*)_^1_%ADC FTN1_)USASCI CONTROL_^1_%ADC REWND_(TAPE SCOEP NOP CALL_^1_%ADC FMDMP_(*** SPARM_(****_^1_%ADC SUDMP_(*** ROUTINE_%****_^1_%ADC SHDMP_(*** ADDRESSES_#****_^1_%ADC SCDMP_^1_%ADC SRCNT_^1_%ADC SCFNT_^1_%ADC €€ REWND_^1_%ADC UNLOD_^1_%ADC LEAVE_^1_%ADC EOV_^1_%ADC PNAM_^1_%ADC TNAM_^1_%ADC SNAM_^1_%ADC ONAM_^1OPADR EQU OPADR(*)_^1OPADR1 EQU OPADR1(*)_^1_%ADC SETSL_(*** ROUTINE_(***_^1_%ADC SETBL_(*** ADDRESSES_%***_^1_%ADC SETNL_^1_%ADC SETVBR_^1_%ADC SETVR_^1_%ADC SEFBR_^1_%ADC SETFR_^1_%ADC SETUR_^1_%ADC SETBR_^1_%ADC SETSF_^1_%ADC SETBLK_^1_%ADC SETRL_^1_%ADC LN€ C_*SET LINE COUNT_^1_%ADC SETRL_(SET LINE SIZE_^1_%ADC SETB_^1_%ADC SETE_^1_%ADC SETA_^1_%ADC PNAM_^1_%ADC TNAM_^1_%ADC SNAM_^1_%ADC ONAM_^1_%END_]_^__  PSCAN CSY/ U04 P€1_%NAM SCAN_)DECK-ID U04 MAG TAPE UTILITY_$SUMMARY-106_^1*_$ISOLATES A CHAR. PHRASE FROM THE CONTROL STMNT._^1*_$CYBER 18 / 1700 COMPUTER SYSTEMS_^1*_$SMALL SYSTEMS DIVISION, LA JOLLA, CALIFORNIA_^1*_$COPYRIGHT CONTROL DATA CORPORATION 1976_^1*_]_^1***_"PURPOSE_^1*_$-------_^1*_]_^1*** THE PURPOSE OF THIS ROUTINE IS TO ISOLATE CHARACTER ***_^1*** PHRASES; CONVERT ASCII DECIMAL/€€ASCII HEX DATA TO_"***_^1*** INTERNAL BINARY; TO PRESET POINTERS IN THE SCCB;_"***_^1*** AND TO PROVIDE ON-LINE SELECTIVE CORRECTION OF_$***_^1*** ERRORS._K***_^1_%SPC 1_^1****_!*****************************************************************_^1*_$ENTRY POINTS_^1****_!*****************************************************************_^1_%ENT SCAN,RETYPE,SCAN2,SEARCH_^1_%ENT S€€ET,ALPHA,HEXBIN,DECBIN_^1****_!*****************************************************************_^1*_$EXTERNALS_^1****_!*****************************************************************_^1_%EXT CIFLAG_'CONTROL INPUT FLAG (0 IF TTY)_^1_%EXT LBYTE,LWORD,RMESS,FMTMSG,INBUF2_^1****_!*****************************************************************_^1*_$EQUIVALENCES_^1****_!**********€€*******************************************************_^1_%EQU LPMSK(2)_$MASK TABLE 0,1,3 TO FFFF_^1****_]_^1_%SPC 3_^1SCAN_!NOP 0_,ENTRY_^1_%RTJ* SCAN2_(SCAN STATEMENT_^1_%LDQ* ERRFLG_'ANY ERRORS_^1_%SQZ SCA1_)NO-SKIP_^1_%RTJ* RETYPE_'CORRECT ERROR_^1_%SAP SCA1_)END?_^1_%JMP* SCAN+1_'GO TO SCAN A STATEMENT_^1SCA1_!EQU SCA1(*)_^1SCAEX JMP* (SCAN)_'EXIT_^1*******************€€********************************_^1***_!ACTUAL SCAN ROUTINE_6***_^1***************************************************_^1SCAN2 NOP 0_,ENTRYPOINT_^1_%CLR A_,CLEAR ERROR FLAG_^1_%STA* ERRFLG_^1_%STA- SEQU7,I_^1_%STA- SEQU5,I_%SET LENGTH OF CURR. PHRASE TO ZERO_^1_%STA- SEQU8,I_%CLEAR TOTAL LENGTH COUNTER_^1_%LDA- SEQU3,I_%PICK UP ASDRS. OF NEXT CHAR IN BUFF_^1_%STA- SEQU4,I_%AND S€€TORE AS CHAR ADDR OF CURR PHRASE_^1_%SET A_^1_%STA- SEQU6,I_%SET SCFLG TO $FFFF_^1_%RTJ* SEARCH_^1_%LDQ* TABSC,Q_%GET ADDRESS OF ROUTINE_^1_%RTJ- 1,Q_*GO TO ROUTINE_^1_%LDQ* ERRFLG_'CHECK FOR ANY ERRORS ON RETURN_^1_%SQN SCAN27_'IF ERRORS SKIP TO NEXT COMMA_^1_%JMP* (SCAN2)_^1SCAN27 RTJ* SEARCH_^1_%RAO- SEQU5,I_^1_%SQZ SCAN28_'AFTER ERROR FOUND COMMA_^1_%INQ -7_+IS CHAR A $FF/_€€^1_%SUB* SCOFF_(CHECK FOR END OF LINE_^1_%SAZ SCAN28_'LEGAL END OF SENTENCE EXIT_^1_%JMP* SCAN27_'GET ANOTHER CHAR._^1SCAN28 CLR A_,FOUND OF PHRASE_^1_%JMP* (SCAN2)_^1_%SPC 4_^1TABSC EQU TABSC(*)_^1_%ADC COMMA-1_%PROCESS COMMA_^1_%ADC ALPHA-1_%PROCESS ALPHA CHARACTER_^1_%ADC ALPHA-1_%PROCESS ALPHA CHAACTER_^1_%ADC DECBIN-1_$PROCESS DECIMAL DIGITS_^1_%ADC HEXBIN-1_$PROCESS€€ HEX DIGITS_^1_%ADC ERROR-1_%ERROR EXIT_^1_%ADC ERROR-1_%ERROR_^1_%ADC ERROR-1_%ERROR_^1_%SPC 4_^1COMMA EQU COMMA(*)_^1_%NOP 0_^1_%JMP* SCAN2+1_%GET NEXT PHRASE FOUND A COMMA_^1_%SPC 2_^1ERROR EQU ERROR(*)_^1_%NOP 0_,POSSIBLE END OF SENTENCE OR ERROR_^1_%SUB* SCOFF_(CHECK FOR END OF SENTECE CHARACTER_^1_%SAZ EXIT_^1_%RAO* ERRFLG_'OTHERWISE SET ERROR FLAG AND EXIT_^1_%CL€€R A_^1_%JMP* (ERROR)_%RETURN TO PROCESSING_^1EXIT_!EQU EXIT(*)_^1_%SET A_,SET END OF SCAN CHARACTER IN A_^1_%JMP* (SCAN2)_%RETURN TO INITIAL CALLER_^1_%SPC 4_^1*** THE PURPOSE OF SEARCH IS TO IDENTIFY A GIVEN **_^1*** ASCII CHARACTER TYPE AND ASSIGN A SPECIFIC_!**_^1*** INDEX CODE FOR IT._:**_^1SEARCH NOP 0_,ENTRY_^1SRCH1 LDQ- SEQU3,I_%GET ADDRS OF NEXT CHAR IN BUFFER._^1_€€%RTJ* (SRADC1)_$GET A CHAR._^1_%STQ- SEQU3,I_%STORE INCRE. ADDRS BACK IN SNCA_^1_%RAO- SEQU8,I_%INCREMENT FOR EACH CHARACTER OF PHRASE_^1_%ENQ -1_+SET UP INDEX AS MINUS 1 SO COMMA IS 0_^1_%STQ* INDEX_(INITIALIZE INDEX_^1_%STA* CHAR_)SAVE CHAR._^1_%LDQ =XRNGCHT_$SET UP CHAR ADDRS. FOR INDEXING_^1_%QLS 1_,THROUGH CHAR TABLE_^1SRC1_!EQU SRC1(*)_^1_%RAO* INDEX_(COUNT_^1_%RTJ* (SRAD€€C1)_$GET A CHAR._^1_%SUB* CHAR_)COMPARE CHARS._^1_%SAP SCON1_(SKIP-NO COMPARE_^1_%INQ 1_,INCR. CHAR ADDRESS BY 1_^1_%JMP* SRC1_)GET ANOTHER CHAR._^1SCON1 RTJ* (SRADC1)_$GET A CHARACTER_^1_%SUB* SCOFF_(IS THERE A CHAR._^1_%SAZ SCON3_(NO-SKIP_^1_%ADD* SCOFF_(RESTORE CHAR._^1_%SUB* CHAR_^1_%INA -1_^1_%SAM SCON3_^1_%JMP* SRC1_^1SCON3 EQU SCON3(*)_^1_%LDQ* INDEX_^1_%LDA* CHAR_^1€€_%JMP* (SEARCH)_^1SCOFF NUM $FF_^1SRADC1 ADC LBYTE_^1CHAR_!NUM 0_^1INDEX NUM 0_,USE FOR INDEX TO CHARACTER TABLE_^1RNGCHT NUM $2C2C_(* COMMA*_(INDEX CODE = 1_^1_%NUM $5A47_(* G - Z *_52_^1_%NUM $4641_(* A - F *_53_^1_%NUM $3930_(* 1 - 9 *_54_^1_%NUM $2424_(*_!$_!*_55_^1_%NUM $3D3D_(*_!=_!*_*6_^1_%NUM $2727_(*_!'_!*_57_^1_%NUM $FFFF_(* $FF *_58_^1ERRFLG NUM 0_^1_%EQ€€U SEQU1(1)_^1_%EQU SEQU2(SEQU1+1)_^1_%EQU SEQU3(SEQU2+1)_^1_%EQU SEQU4(SEQU3+1)_^1_%EQU SEQU5(SEQU4+1)_^1_%EQU SEQU6(SEQU5+1)_^1_%EQU SEQU7(SEQU6+1)_^1_%EQU SEQU8(SEQU7+1)_^1*** THE RETYPE ROUTINE IS CALLED TO DISPLAY AN ***_^1*** ERROR MESSAGE INDICATING AN INVALID PARAMETER ***_^1*** AND TO ACCEPT THE CORRECT PARAMETER_****_^1*******************************************€€***********_^1RETYPE NOP 0_^1_%LDQ- $FF_*SAVE I-REGISTER_^1_%STQ* ISAVE_^1RET1_!EQU RET1(*)_^1_%LDA- SEQU4,I_^1_%ALS 15_+CONVERT TO WORD ADDRESS_^1_%STA* TEMP2_(SAVE SEMI WORD ADDRESS_^1_%LDA- SEQU8,I_%GET LENGTH OF PHRASE IN ERROR_^1_%STA* DAT1_)USE IN DATA LIST FOR RMT MSG_^1_%LDA =XDAT1_'ADDRESS OF DATA LIST_^1_%RTJ FMTMSG_'CALL FORMATED MESSAGE ROUTINE_^1_%ADC RMESS1_^1_%€€SET Q_^1_%STQ INBUF2_'INITIALIZE CORRECTION BUFFER TO NULL_^1_%LDQ CIFLAG_'CHECK CONTROL INPUT FLAG_^1_%SQN RET3_)NO CORRECTION IF INPUT NOT TTY_^1_%RTJ RMESS_(CALL READ STATEMENT_^1_%ADC SCCB2-1_^1RET3_!EQU RET3(*)_^1_%LDQ* *-1_^1_%STQ- $FF_^1_%RTJ* SCAN2_^1_%LDQ* ERRFLG_^1_%SQZ RET4_)NO ERRORS EXIT_^1_%JMP* RET1_)REDO_^1RET4_!EQU RET4(*)_^1_%LDQ* ISAVE_^1_%SAM RETEXT_^1€€_%LDA- SEQU4,I_^1_%STA- SEQU4,Q_^1_%LDA- SEQU5,I_^1_%STA- SEQU5,Q_^1_%LDA- SEQU6,I_^1_%STA- SEQU6,Q_^1_%LDA- SEQU7,I_^1_%STA- SEQU7,Q_^1_%LDA- SEQU8,I_%GET PHRASE LENGTH_^1_%STA- SEQU8,Q_^1RETEXT EQU RETEXT(*)_^1_%STQ- $FF_^1_%JMP* (RETYPE)_$EXIT_^1ISAVE NUM 0_,I-REG HOLD_^1_%EQU MAXLIN(5)_^1DAT1_!NUM 0_^1TEMP2 NUM 0_^1_%SPC 4_^1*********************************************€€_^1****_"ISOLATE AN ALPHA PHRASE_)****_^1*********************************************_^1ALPHA NOP 0_,ENTRY_^1_%ENA 1_,SET LENGTH OF PHRASE = 1_^1_%STA- SEQU5,I_%(SCPHL)_^1ALPHA1 EQU ALPHA1(*)_^1_%RTJ+ SEARCH_^1_%SQZ ALPX_)SKIP TO END IF COMMA_^1_%LDQ* ALPHT2,Q_$GET ADDRESS OF ROUTINE_^1_%RTJ- 1,Q_*GO TO ROUTINE_^1ALPX_!EQU ALPX(*)_^1_%JMP* (ALPHA)_%RETURN_^1_%SPC 4_^1CALP_!€€NOP 0_,PROCESS ALPHA CHARACTERS_^1_%RAO- SEQU5,I_%INCREASE LENGTH BY ONE_^1_%JMP* ALPHA1_'GET NEXT CHARACTER_^1_%SPC 4_^1ALERR NOP 0_,ERROR ROUTINE COMMON FOR ALPHA OTHERS_^1_%SUB* SCOFF_(CHECK FOR VALID END OF LINE CHARACTER_^1_%SAZ ALERR2_'IF ZERO OK_^1_%CLR A_^1_%RAO* ERRFLG_'SET ERROR_^1ALERR2 EQU ALERR2(*)_^1_%JMP* (ALERR)_%RETURN_^1_%SPC 4_^1**************************€€*******************_^1*** DECIMAL TO BINARY CONVERSION ROUTINE ***_^1*********************************************_^1DECBIN NOP 0_^1_%INA -$30_)CONVERT CHAR_^1_%CLR Q_,SET SCFLG_^1_%STQ- SEQU6,I_^1DEC1_!EQU DEC1(*)_^1_%STA- SEQU7,I_%STORE DECIMAL CONVERTED RESULT_^1_%RTJ* (ALPHA1+1)_"CALL SEARCH_^1_%SQZ DECEX_(COMMA FOUND YOU ARE FINISHED_^1_%INQ -3_+CHECK FOR NUMERIC_^1_%SQ€€Z DEC4_)PROCESS DECIMAL CHARACTER_^1_%RTJ* ALERR_(CHECK IF ERROR OF END OF SENTENCE THEN EXIT_^1DECEX EQU DECEX(*)_^1_%JMP* (DECBIN)_$EXIT_^1DEC4_!INA -$30_^1_%STA* TEMP2_^1_%ENA $A_+SET UP FOR MULTIPLY_^1_%MUI- SEQU7,I_^1_%ADD* TEMP2_^1_%JMP* DEC1_^1***********************************************_^1*** HEX TO BINARY CONVERSION ROUTINE_$****_^1********************************€€***************_^1HEXBIN NOP 0_,ENTRY_^1_%CLR Q_,CLEAR NUMERIC ENTRY AND SET NUMERIC FLAG_^1_%STQ- SEQU6,I_^1HEX1_!EQU HEX1(*)_^1_%STQ- SEQU7,I_^1_%RTJ* (ALPHA1+1)_"CALL SEARCH_^1_%SQZ HEXIT_(COMMA SO EXIT_^1_%INQ -2_+ALPHA HEX DIGIT_^1_%SQN HEX2_)NO_^1_%INA -$37_)CONVERT TO HEX DIGIT_^1_%JMP* STHEX_^1HEX2_!EQU HEX2(*)_^1_%INQ -1_+DEC DIGIT_^1_%SQN HERR_)NO MUST BE ERROR_€€^1_%INA -$30_^1STHEX EQU STHEX(*)_$CONVERT TOTAL_^1_%LDQ- SEQU7,I_^1_%ALS 12_+SHIFT TO UPPER DIGIT_^1_%LLS 4_,PLACE IN Q_^1_%JMP* HEX1_)GO STORE RESULT AND CONTINUE_^1HERR_!EQU HERR(*)_^1_%RTJ* ALERR_(CHECK IF ERROR OR END_^1HEXIT EQU HEXIT(*)_^1_%JMP* (HEXBIN)_^1_%SPC 4_^1*********************************_^1*** SET UP A COMPONENT_'***_^1*********************************_^€€1_%SPC 4_^1SET_"NOP 0_^1_%RTJ* (ALPHA1+1)_"CALL SEARCH_^1_%LDQ* SETTB1,Q_^1_%RTJ- 1,Q_^1SETEXT EQU SETEXT(*)_^1_%JMP* (SET)_(RETURN_^1_%SPC 4_^1SALPQ NOP 0_^1_%LDA- SEQU3,I_%GET ADDRESS OF COMPONENT_^1_%STA- SEQU7,I_%SAVE IN PINTER WORD_^1SALPNX EQU SALPNX(*)_^1_%RTJ* (ALPHA1+1)_"CALL SEARCH_^1_%INQ -6_+CHECK IF QUOATE FOUND YEST_^1_%SQZ SALPEX_'YES EXIT_^1_%SUB SCOFF_(IS€€ THE CHARACTER AN EOL CHAR_^1_%SAZ SALPEX_'YES_^1_%RAO- SEQU6,I_%COUNT LENGTH OF PHRASE_^1_%JMP* SALPNX_'CONTINUE WIH NEXT CHARACTER_^1SALPEX EQU SALPEX(*)_^1_%JMP* (SALPQ)_%RETURN_^1_%SPC 4_^1* TABLE FOR SET FOLLOWS_^1SETTB1 EQU SETTB1(*)_^1_%ADC ALERR-1_%COMMA - EORROR_^1_%ADC ALERR-1_%ALPHA - ERROR_^1_%ADC ALERR-1_%ALPHA - ERROR_^1_%ADC DECBIN-1_$DECIMAL DIGIT_^1_%ADC €€HEXBIN-1_$HEX DIGIT_^1_%ADC ALERR-1_%EQUAL SIGN ERROR_^1_%ADC SALPQ-1_%QUOTE POCESSING_^1_%ADC SETER-1_%ANYTHING ELSE IS AN ERROR_^1SETER NOP 0_^1_%ENA 1_,PUT GARABAGE IN A_^1_%RTJ* ALERR_^1_%JMP* (SETER)_^1_%SPC 4_^1* ALPHA BRANCH TABLE FOLLOWS_^1_%SPC 4_^1ALPHT2 EQU ALPHT2(*-1)_^1_%ADC CALP-1_'ALPHA CHAR_^1_%ADC CALP-1_'ALPHA CHAR_^1_%ADC DECBIN-1_$DECIMAL DIGIT_^1_%€>ADC HEXBIN-1_$HEX DIGIT_^1_%ADC SET-1_(COMPONENT PHRASE_^1_%ADC ALERR-1_%ERROR_^1_%ADC ALERR-1_%ERROR OR END OF SCAN_^1_%SPC 4_^1* MESSAGES AND BUFFERS_^1SCCB2 ADC INBUF2_'SECONDARY SCAN CONTROL BLOC_^1_%ADC MAXLIN_^1_%NUM 0,0,0,0,0,0_^1RMESS1 ALF 21,14CINVALID PARM='.%A%1C'/12CRETYPE PARM:;;_^1_%END_]_^__ >POPENIO CSY/ U05 P€1_%NAM OPENIO_'DECK-ID U05 MAG TAPE UTILITY_$SUMMARY-106_^1*_$PROCESSES THE OPEN STMNT._^1*_$CYBER 18 / 1700 COMPUTER SYSTEMS_^1*_$SMALL SYSTEMS DIVISION, LA JOLLA, CALIFORNIA_^1*_$COPYRIGHT CONTROL DATA CORPORATION 1976_^1*_]_^1***_"PURPOSE_^1*_$-------_^1*_]_^1*_$PROCESSES THE OPEN STATEMENT_^1****_!*****************************************************************_^1*_$ENTRY PO€€INTS_^1****_!*****************************************************************_^1****_!*****************************************************************_^1*_$EXTERNALS_^1****_!*****************************************************************_^1_%ENT OPENIO_^1_%EXT RMESS,SCAN,PSRCH_^1_%EXT CLRRGN,OPTAB,RETYPE_^1_%EXT PUTIT_^1_%EXT RESTRT_^1_%EXT RELLAB_^1_%EXT RELBUF,WRITE_^1€€_%ENT MOTION_^1_%ENT INPUT,OUTPUT_^1_%ENT INPM1,OUTM1,PRNM1_^1_%ENT PRNDMB_^1_%ENT OPN27_^1_%ENT DMBTM1_^1_%EXT SETCNT_^1_%EXT CLSLAB_^1_%EXT STNLAB_^1_%EXT FMTMSG_^1****_!*****************************************************************_^1*_$EQUIVALENCES_^1****_!*****************************************************************_^1****_]_^1W0_#EQU W0(0)_^1S0_#EQU S0(64)_€€^1S1_#EQU S1(65)_^1S4_#EQU S4(68)_^1S014_!EQU S014(78)_^1S015_!EQU S015(79)_^1LOGTAB EQU LOGTAB(*)_^1_%NUM $8F9_^1_%NUM $8FA_^1_%NUM $8FA_^1_%NUM $8FB_^1FLG_"EQU FLG(*)_^1_%NUM 0_^1_%NUM $4000_^1_%NUM 0_^1_%NUM $4000_^1_%SPC 4_^1OPENIO NOP 0_^1_%RTJ* ASGIO_(ASSIGN I/O DEVICES_^1_%SAM OPERRX_'IF OPEN OR NO DEVISE ASSIGNED ERROR_^1OPN05 EQU OPN05(*)_^1_%STA* CURDMB€€_^1_%LDA* (CURDMB)_^1_%SAP OPN10_(FILE OPEN_^1OPERRX EQU OPERRX(*)_^1_%RTJ FMTMSG_'CALL MSGOUT ROUTINE_^1_%ADC OCERR_^1_%JMP RESTRT_^1OPN10 EQU OPN10(*)_^1_%LDA* FLG,Q_(SET IOBFLG_^1_%STA* (CURDMB)_^1_%LDA- SCFLG,I_%IS THERE A NEW LOGICAL UNIT_^1_%SAN OPN15_(NO_^1_%LDA- SCNUM,I_%GET UNIT NUMBER_^1_%JMP* OPN16_^1OPN15 EQU OPN15(*)_^1_%LDA* LOGTAB,Q_$GET STANDARD DEVICE ASS€€IGNED_^1OPN16 EQU OPN16(*)_^1_%LDQ* CURDMB_^1_%INQ -1_^1_%STQ* CURDMB_'SET DMB-1 ADDRESS_^1_%STA- DEQU4,Q_%STORE LOGICAL UNIT_^1_%INQ 5_,CLEAR DMB WORDS 5 - 21_^1_%ENA 17_^1_%RTJ CLRRGN_^1_%LDQ* CURDMB_'GET DMB ADDRESS_^1_%ENA 56_+SET MAXIMUM LINES PER PAGE_^1_%STA- DEQU6,Q_^1* BASIC DMB INITIALIZATION COMPLETE_^1OPN20 EQU OPN20(*)_^1_%RTJ* (SCANX)_%CALL SCAN ROUTINE_^1_%S€€AM OPN40_(DONE_^1OPN25 EQU OPN25(*)_^1_%RTJ* (PSRCHX)_$CALL PARM SEARCH_^1_%ADC OPTAB_(ADDRESS_^1_%SAP OPN35_^1OPN27 EQU OPN27(*)_^1_%RTJ* (XRETYP)_^1_%SAP OPN30_^1_%JMP* OPN20_(TYPED CARRIAGE RETURN CONTINUE SCAN_^1OPN30 EQU OPN30(*)_^1_%JMP* OPN25_^1OPN35 EQU OPN35(*)_^1_%STA* OPCALL_^1_%LDQ* CURDMB_^1_%RTJ* (OPCALL)_$CALL PARM MODULE_^1_%JMP* OPN20_(GET NEXT PARM_^1O€€PN40 EQU OPN40(*)_^1* ALL PARMS PROCESSED CHECK FOR ERRORS BEFORE OPEN CALL_^1_%LDQ* CURDMB_'DONE WITH SCAN_^1_%STQ- $FF_*USE I FOR DMB POINTER_^1_%LDA- DEQU8,I_%RECSIZ IN A_^1_%LDQ- DEQU7,I_%BLKSIZ IN Q_^1_%SQN OPN60_(BLKSIZ ZERO?_^1_%SAN OPN50_(YES= RECSIZ ZERO_^1_%LDA =N136_^1_%STA- DEQU8,I_^1OPN50 EQU OPN50(*)_^1_%STA- DEQU7,I_^1OPN60 EQU OPN60(*)_^1_%SAN OPN65_^1_%ST€€Q- DEQU8,I_^1OPN65 EQU OPN65(*)_^1_%LDA- DEQU7,I_%IS BLOCK SIZE LESS THAN RCORD SIZE_^1_%SUB- DEQU8,I_%SUB RECORD SIZE_^1_%SAP OPN70_(NO - SKIP IF OK OTHERWISE ISSUE ERROR_^1_%ENA S4_^1_%RTJ* (SERR)_^1OPN70 EQU OPN70(*)_^1_%LDQ- DEQU0,I_%BLOCKING ???_^1_%QLS 2_,PLACE BLOCKING BIT IN BIT 15_^1_%SQP OPN75_(NO BLOCKING SKIP_^1_%SAN OPN79_(BLOCK > REC SKIP IF YES_^1_%SET A_,N€€O ISSUE WARNING MESSAGE_^1OPN75 EQU OPN75(*)_^1_%SAZ OPN79_(NO BLOCKING REQUIRE BLOCK=REC OTHERWISE WARN U_^1_%ENA W0_+NO WRONG BLOCK SPECIFICATION_^1_%RTJ* (SERR)_'ISSUE WARNING ERRRR MESSAGE AND RETURN_^1OPN79 EQU OPN79(*)_^1_%LDA- DEQU0,I_^1_%CLR Q_^1_%ALS 2_^1_%LLS 1_,CHECK VARAIBEL_^1_%SAP OPN80_^1_%QLS 2_^1_%ADQ- DEQU7,I_^1_%INQ 4_^1_%STQ- DEQU7,I_^1_%LDA- DEQU8,I€€_^1_%INA 4_,INCREASE RECORD SIZE_^1_%STA- DEQU8,I_^1OPN80 EQU OPN80(*)_^1_%LDQ* CURDMB_^1_%LDA- DEQU6,I_%GET LINE COUNT_^1_%RTJ* (SETIT)_^1_%NOP 0_,SAVE FOR COUNT_^1_%STA- DEQU18,Q_$ACONV IS NOW A LINE COUNTER_^1_%CLR A_,CLEAR END-OF-FILE ADDRESS_^1_%STA- DEQU2,Q_^1_%RTJ* OPEN_^1_%JMP* (OPENIO)_^1OPCALL NUM 0_^1CURDMB NUM 0_^1_%SPC 4_^1**************************************€€**_^1* ASGIO - DETERMINE IO DEVICE ASSIGNED*_^1*_)BY: I,O,VF,OR PR TYPEIN_#*_^1*_!CALL:_"RTJ ASGIO_0*_^1*_+(A) = DMB ADDRESS OR NEG *_^1*_+(Q) = INDEX TO DMB_'*_^1*_E*_^1*_$IF A IS NEGATIVE PARAMETER NOT *_^1*_$FOUND_:*_^1*_$INDEX_!I = 0_2*_^1*_-O = 1_2*_^1*_,VF = 2_2*_^1*_,PR = 3_2*_^1****************************************_^1_%SPC 4_^1_%ENT ASGIO_^1ASGIO NOP 0_,ENTRY_^1_%€€RTJ* (SCANX)_^1_%SAM ASGEXT_'END OF SCAN = ERROR_^1_%RTJ* (PSRCHX)_$CALL PARM SEARCH_^1_%ADC DEVICE_'PARM TABLE POINTER_^1_%INQ -1_^1ASGEXT EQU ASGEXT(*)_^1_%JMP* (ASGIO)_%RETURN_^1_%SPC 4_^1_%SPC 4_^1DMBTAB EQU DMBTAB(*)_#ADDRESS TABLE OF DMB_^1DMBTM1 EQU DMBTM1(DMBTAB-1)_^1DMBI_!ADC INPUT_^1DMBO_!ADC OUTPUT_^1DMBVF ADC OUTPUT_^1DMBP_!ADC PRNDMB_^1_%SPC 4_^1_%ENT SE€€TSL,SETBL,SETNL,SETVBR,SETVR,SEFBR_^1_%ENT SETBLK_^1_%ENT SETFR,SETUR,SETBR,SETSF,SETBL,SETBL1,SETRL_^1_%ENT SETB,SETA,SETE_^1_%SPC 4_^1******************************************_^1*_"EQUATES FOR IOBFLG % MASKS_(*_^1******************************************_^1*_"MASKS_]_^1_%SPC 4_^1MRDWRF EQU MRDWRF($4000)_^1MBLOCK EQU MBLOCK($2000)_^1MRECFM EQU MRECFM($1800)_^1MLABEL EQU €€ MLABEL($600)_^1MEOVF EQU MEOVF($100)_^1MEOFF EQU MEOFF($80)_^1MRESRV EQU MRESRV($10)_^1MCONVF EQU MCONVF($60)_^1MSELTF EQU MSELTF($C)_^1MCLOSF EQU MCLOSF($3)_^1_%SPC 4_^1*IOBFLG_]_^1_%SPC 4_^1RDWRF EQU RDWRF(MRDWRF)_^1BLOCKF EQU BLOCKF(MBLOCK)_^1UNDREC EQU UNDREC(0)_^1FIXREC EQU FIXREC($800)_^1VARREC EQU VARREC($1000)_^1NOLBL EQU NOLBL(0)_^1STNDLB EQU STNDLB($20€€0)_^1BYPSLB EQU BYPSLB($400)_^1EOVF_!EQU EOVF(MEOVF)_^1EOFF_!EQU EOFF(MEOFF)_^1NOCONV EQU NOCONV(0)_^1ETOASC EQU ETOASC($20)_^1BTOASC EQU BTOASC($40)_^1CLREW EQU CLREW(0)_^1CLUNL EQU CLUNL($1)_^1CLLEAV EQU CLLEAV($2)_^1CLEAOV EQU CLEOV($3)_^1_%SPC 4_^1ASGNUM NOP 0_^1_%LDA- SCFLG,I_^1_%SAN ASGNER_^1_%LDA- SCNUM,I_^1_%JMP* (ASGNUM)_^1ASGNER JMP* OPN27_^1_%SPC 4_^1****€€****************************************************_^1*** THE FOLLOWING SUBROUTINES SET PARAMETER VALUES ****_^1*** IN ONE OF THE DATA MANAGEMENT BLOCKS_+****_^1*********************************************************_^1SETSL NOP 0_,ENTRY_^1_%RTJ* SETNL_^1_%ADD =XSTNDLB_^1_%STA- DEQU0,Q_^1_%JMP* (SETSL)_%EXIT_^1*********************************************************_^1SET€€BL NOP 0_,ENTRY_^1_%RTJ* SETNL_^1_%ADD =XBYPSLB_^1_%STA- DEQU0,Q_^1_%JMP* (SETBL)_%EXIT_^1*********************************************************_^1SETNL NOP 0_,ENTRY_^1_%LDA- DEQU0,Q_^1_%AND* MLBLM_^1_%STA- DEQU0,Q_^1_%JMP* (SETNL)_%EXIT_^1*********************************************************_^1_%SPC 4_^1MLBLM ADC (-MLABEL)_^1PSRCHX ADC PSRCH_^1SCANX ADC SCAN_^1SE€€RR_!ADC SYSERR_^1SETIT ADC SETCNT_^1XRETYP ADC RETYPE_^1_%SPC 4_^1*********************************************************_^1SETVBR NOP 0_,ENTRY_^1_%RTJ* SETUR_^1_%ADD =XVARREC+BLOCKF_^1_%STA- DEQU0,Q_^1_%JMP* (SETVBR)_$EXIT_^1*********************************************************_^1SETVR NOP 0_,ENTRY_^1_%RTJ* SETUR_^1_%ADD =XVARREC_^1MODEBT EQU MODEBT(*-1)_!USE FOR €€MODE SETTING_^1_%STA- DEQU0,Q_^1_%JMP* (SETVR)_%EXIT_^1*********************************************************_^1SEFBR NOP 0_,ENTRY_^1_%RTJ* SETUR_^1_%ADD =XFIXREC+BLOCKF_^1_%STA- DEQU0,Q_^1_%JMP* (SEFBR)_%EXIT_^1*********************************************************_^1SETFR NOP 0_,ENTRY_^1_%RTJ* SETUR_^1_%ADD =XFIXREC_^1_%STA- DEQU0,Q_^1_%JMP* (SETFR)_%EXIT_^1**********€€***********************************************_^1SETUR NOP 0_,ENTRY_^1_%LDA- DEQU0,Q_%GET IOBFLG_^1_%AND* RECFM_(CLEAR RECORD TYPE FLAG BITS_^1_%JMP* (SETUR)_^1RECFM ADC (-MRECFM-BLOCKF)_^1*********************************************************_^1SETBR NOP 0_,ENTRY_^1_%LDA- DEQU6,I_%PICK UP SCNUM(HEX NO. CONTAINED_^1_%STA- DEQU17,Q_$IN CURRENT PHRASE) AND STORE IN_^1_%JMP*€€ (SETBR)_%RECORD OF DMB._^1*********************************************************_^1SETSF NOP 0_,ENTRY_^1_%LDA- DEQU6,I_%PICK UP SCNUM(HEX NO. CONTAINED_^1_%STA- DEQU16,Q_$IN CURRENT PHRASE) AND STORE IN FORD_^1_%JMP* (SETSF)_%RECORD OF DMB_^1*********************************************************_^1SETBLK NOP 0_^1_%RTJ* ASGNUM_^1_%STA- DEQU7,Q_^1SETBL1 JMP* (SETBLK)_$EXIT_€€^1*********************************************************_^1SETRL NOP 0_,ENTRY_^1_%RTJ* ASGNUM_^1_%STA- DEQU8,Q_^1SETRL1 JMP* (SETRL)_%EXIT_^1*********************************************************_^1LNC_"NOP 0_^1_%RTJ* ASGNUM_^1_%STA- DEQU6,Q_^1_%JMP* (LNC)_^1_%ENT LNC_^1SETB_!NOP 0_,ENTRY_^1_%LDA- DEQU4,Q_%GET LOG1 WORD AND SET MODE BIT ON_^1_%ADD* MODEBT_^1_%STA- DEQU4,€€Q_%BCD CONVERSION NOW SET_^1_%JMP* (SETB)_^1*********************************************************_^1SETE_!NOP 0_,ENTRY_^1_%LDA- DEQU0,Q_%GET IOBFLG_^1_%INA ETOASC_^1_%STA- DEQU0,Q_%IOBFLG NOW SET FOR EBDIC CONVERSION_^1_%JMP* (SETE)_'EXIT_^1*********************************************************_^1SETA_!NOP 0_,ENTRY_^1_%JMP* (SETA)_'EXIT_^1REWND EQU REWND(SETA)_^1*******€€**************************************************_^1****************************************************_^1_%SPC 4_^1_%SPC 4_^1SCFLG EQU SCFLG(6)_^1SCNUM EQU SCNUM(SCFLG+1)_^1_%SPC 4_^1*** THE FOLLOWING EQU STATEMENTS ARE USED TO_"****_^1*** REFERENCE THE DATA MANAGEMENT BOLCK (DMB) ****_^1****************************************************_^1_%EQU DEQU0(1)_$IOBFLG -_#DE€€VICE DEPENDENT INFO_^1_%EQU DEQU1(DEQU0+1) RESERVED_^1_%EQU DEQU2(DEQU1+1) EOFADR -_#ADDR. - USER EOF ROUTINE_^1_%EQU DEQU3(DEQU2+1) ERREXT -_#ADDR. - USER ERROR PROC._^1_%EQU DEQU4(DEQU3+1) LOG1 -_%LOGICAL UNIT NO._^1_%EQU DEQU5(DEQU4+1) ABUFFP =_#ADDR. - USER BUFFER POOL_^1_%EQU DEQU6(DEQU5+1) LBUFFP -_#LENGTH OF BUFFER POOL_^1_%EQU DEQU7(DEQU6+1) MAXBLK -_#MAXI. BL€€OCKSIZE TO RD/WR_^1_%EQU DEQU8(DEQU7+1) RECSIZ -_#MAXI. SIZE -LOGICAL RECORD_^1_%EQU DEQU9(DEQU8+1) ABLK -_%ADDR. - CURRENT BLOCK_^1_%EQU DEQU10(DEQU9+1) LBLK -_%LENGTH OF CURRENT BLOCK_^1_%EQU DEQU11(DEQU10+1) ARECL -_$ADDR.-CURRENT LOG. RECORD_^1_%EQU DEQU12(DEQU11+1) LRECL -_$LENGTH OF CURRENT LOG REC_^1_%EQU DEQU13(DEQU12+1) BLKCNT -_#NO. OF BLOCKS PROCESSED_^1_%EQU€€ DEQU14(DEQU13+1) RECCNT_%NO. OF RECORDS PROCESSED_^1_%EQU DEQU15(DEQU14+1) ALABEL -_#ADDR.-LABEL PROCESSOR_^1_%EQU DEQU16(DEQU15+1) FORD -_%FILE ORDINAL_^1_%EQU DEQU17(DEQU16+1) RECORD -_#RECORD ORDINAL_^1_%EQU DEQU18(DEQU17+1) ACONV -_$ADDR.-CONVERSION ROUTINE_^1_%EQU DEQU19(DEQU18+1) ASLCT1 -_#ADDR.-SELECTION ROUTINE 1_^1_%EQU DEQU20(DEQU19+1) ASLCT2 -_#ADDR.-SELEC€€TION ROUTINE 2_^1_%EQU DEQU21(DEQU20+1) ASLCT3 -_#ADDR.-SELECTION ROUTINE 3_^1_%SPC 4_^1_%EXT GETBUF_^1_%ENT OPEN,INITBF,SKIP_^1_%ENT NOLABL_^1*************************************************_^1*** THE OPEN ROUTINE ALLOWS A FILE TO BE PROCESSED ***_^1*** BY SETTING THE DMB PARAMETERS ACCORDING_'***_^1OPEN_!NOP 0_,ENTRYPOINT_^1_%STQ- $FF_*SET THE I REGISTER TO POINT TO DMB B€€EING OPENE_^1_%LDA- DEQU0,Q_%GET FIRST WORD OF DMB_^1_%SAP OPEN1_(FILE IS NOT YET OPEN_^1OPEN1A EQU OPEN1A(*)_^1_%ENA S0_+FILE ALREADY OPEDN_^1_%RTJ* (SERR)_^1OPEN1 EQU OPEN1(*)_^1OPEN3 CLR A_^1_%STA- DEQU13,Q_^1_%STA- DEQU14,Q_^1_%LDQ- DEQU0,Q_^1_%QRS 9_^1_%ENA 3_^1_%LAQ Q_^1_%LDA* OPENLT,Q_$FIND LABEL PROCESSING ROUTINE_^1_%STA* OPEN4+1_^1OPEN4 RTJ+ 0_,CALL LABEL PROCE€€SSOR_^1_%LDA- DEQU5,I_%ABUFFP = 0 ?_^1_%SAN OPEN5_(NO-SKIP_^1_%RTJ* INITBF_'CALL INITIALIZE ROUTINE_^1OPEN5 LDA- DEQU0,I_%GET IOBFLG_^1_%ADD* OPFLAG_'SET OPEN BIT_^1_%STA- DEQU0,I_%OPEN PROCESSING COMPLETE_^1_%JMP* (OPEN)_'EXIT_^1OPENQ NUM 0_^1OPENLT ADC NOLABL_^1_%ADC STNLAB_^1_%ADC BSTLBL_^1_%SPC 4_^1BSTLBL NOP 0_,BYPASS ANY LABELS_^1_%ENA 3_^1_%CLR Q_^1_%MUI- DEQU16,I€€_$SKIP 3 FILES FOR EACH ONE SPECIFIED_^1_%INA 1_^1_%STA- DEQU16,I_$SKIP COUNT NOW READY FOR NO LABEL_^1_%RTJ* NOLABL_^1_%JMP* (BSTLBL)_^1*** INITIALIZE BUFFERS AND POINTERS FOR A READ ***_^1INITBF NOP 0_^1_%LDA- DEQU7,I_%IS MAXBLK = 0_^1_%SAN INIT1_(NO-SKIP_^1_%ENA S014_)ZERO LENGTH BLOCKSIZE_^1_%RTJ* (SERR)_'ISSUE THE ERROR_^1INIT1 EQU INIT1(*)_^1_%ALS 15_+CHECK FOR ODD LEN€€GTH RECORD_^1_%SAP INIT1A_'EVEN IS OK_^1_%ENA S015_)ODD LENGTH REQUEST ISSUE ERROR_^1_%RTJ* (SERR)_^1INIT1A EQU INIT1A(*)_^1_%INA 1_,ALWAYS GET ONE EXTRA CORE LOCATION FOR BUFFER_^1_%RTJ GETBUF_^1_%SQN INIT2_(Q=NOT ZERO_^1_%JMP* OPEN1A_^1INIT2 STQ- DEQU5,I_^1_%STQ- DEQU9,I_^1_%STQ- DEQU11,I_^1_%CLR A_^1_%STA- DEQU10,I_^1_%STA- DEQU12,I_^1_%RTJ PUTIT_^1_%JMP* (INITBF)_^1OP€€FLAG NUM $8000_(OPEN FLAG BIT POSITION 15_^1_%EXT GETLOC_^1_%SPC 4_^1**** THIS ROUTINE PROCESSES NON-LABEL RECORDS **_^1NOLABL NOP 0_,ENTRY_^1_%LDA- DEQU16,I_^1_%SAZ NOLA1_^1_%ENA REWIND_'REWIND TAPE IF POSITION TO FILE IS REQUIRED_^1_%RTJ* MOTION_'CALL MOTION SUBROUTINE_^1NOLADN LDA- DEQU16,I_$CHECK FILE ORDINAL_^1_%RTJ* SKIP_)POSITION TAPE FORWARD_^1_%STA- DEQU16,I_$CLEAR T€€HE FILE ORDINAL NOTE SKIP RETURNS A ZER_^1NOLA1 LDA- DEQU17,I_$RECORD = 0_^1_%SAN NOLA2_(NO-SKIP_^1_%JMP* (NOLABL)_^1NOLA2 LDA- DEQU0,I_^1_%ADD* OPFLAG_^1_%STA- DEQU0,I_^1_%RTJ* INITBF_^1NOLA3 LDQ- $FF_*GET DMB POINTER_^1_%RTJ GETLOC_'READ A RECORD_^1_%LDA- DEQU17,I_$RECORD ORDINAL_^1_%INA -1_^1_%STA- DEQU17,I_$RESTORE_^1_%SAZ NOLA4_(RECORD = 0_^1_%JMP* NOLA3_^1NOLA4 LDA- D€€EQU0,I_^1_%SUB* OPFLAG_^1_%STA- DEQU0,I_^1_%JMP* (NOLABL)_$RETURN_^1_%SPC 4_^1SKIP_!NOP 0_^1_%STA* SKP1_)SAVE FILE ORDINAL_^1SKPR_!ENA SFILEM_'SET UP FOR SKIP FILE_^1_%RTJ* MOTION_'CALL THE MOTION ROUTINE_^1SKPTD LDA* SKP1_^1_%INA -1_^1_%STA* SKP1_^1_%SAZ SKIPDN_'YES - SKIP_^1_%JMP* SKPR_)REPEAT REQUEST_^1SKIPDN JMP* (SKIP)_'EXIT_^1SKP1_!NUM 0_^1*****************************€€*************************_^1******************************************************_^1*** THE CLOSIO ROUTINE PROCESSES THE CLOSE_(***_^1*** DECLARITIVE STATEMENT. IT SETS UP CLSDMB_#***_^1*** AND ASSOCIATED DMB FLAG AS FOLLOWS:_+***_^1***_)IOBFLG_(BITS= 1 0_,***_^1***_)REWIND_"=_*0 0_****_^1***_)UNLOAD_"=_*0 1_,***_^1***_)LEAVE_#=_*1 0_,***_^1***_)EOV_%=_*1 1_,***_^1**************€€****************************************_^1_%ENT CLOSE_^1_%ENT CLOSIO,REWND,UNLOD,LEAVE,EOV_^1_%ENT CLSDMB_^1_%EXT SPARM,FPARM_^1_%EXT SCCB_^1_%EXT STATIS_^1CLOSIO NOP 0_,ENTRY_^1_%RTJ* (XASGIO)_^1_%SAM CLOSER_^1_%INA -1_^1_%STA* CLSDMB_^1_%TRA Q_^1_%ENA -3_^1_%AND- 1,Q_^1_%SAP CLOSER_^1_%STA- 1,Q_^1_%RTJ SPARM_^1_%ADC SCCB_^1_%ADC FPARM_^1_%JMP* CI01_)JMP TO END OF €€SCAN_^1CLOSER RTJ FMTMSG_^1_%ADC OCERR_^1_%JMP RESTRT_^1CI01_!LDQ* CLSDMB_'DMB ADDRS. -1_^1_%RTJ* CLOSE_(CLOSE THE FILE_^1_%JMP* (CLOSIO)_$EXIT_^1CLSDMB NUM 0_^1XASGIO ADC ASGIO_^1*******************************************************_^1***_)CLOSIO SUBROUTINES_4***_^1*******************************************************_^1_%SPC 4_^1UNLOD NOP 0_,UNLOAD PARAMETER_^1_%LDQ* €€CLSDMB_'GET DMB ADDRESS_^1UNLGD1 EQU UNLGD1(*)_^1_%RAO- DEQU0,Q_%INCREMENT IOBFLG_^1_%JMP* (UNLOD)_%EXIT_^1***********************************************_^1LEAVE NOP 0_,LEAVE PARAMETER_^1_%RTJ* UNLOD_(BASIC INITIALIZATION_^1_%RAO- DEQU0,Q_^1_%JMP* (LEAVE)_%EXIT_^1**********************************************_^1EOV_"NOP 0_,END OF VOLUME PARAMETER_^1_%RTJ* LEAVE_(SEMI BASIC INI€€TIALIZATION_^1_%RAO- DEQU0,Q_^1_%JMP* (EOV)_(EXIT_^1**********************************************_^1_%ENT BSPACE_^1_%EXT MESAGE_^1******************************************_^1*_!BSPACE - BACKSPACES SPECIFIED NUMBER*_^1*_,OF PHYSICAL RECORDS._%*_^1******************************************_^1_%SPC 4_^1BSPACE NOP $0_^1BEGIN RTJ* (XASGIO)_$GET LOGICAL UNIT AND DMB_^1_%SAP PARMO€€K_^1_%RTJ* (RETYP)_%BAD PARM - GET RETYPE OF PARM_^1_%JMP* BEGIN_(TRY AGAIN_^1PARMOK EQU PARMOK(*)_^1_%TRA Q_^1_%INQ -1_^1_%LDA- 1,Q_*CHECK IF FILE OPEN_^1_%SAM ITISOP_'YES_^1_%JMP MESAGE_'NO,LEAVE_^1ITISOP EQU ITISOP(*)_^1_%STQ* CLSDMB_'SAVE DMB ADDR._^1SCANIT EQU SCANIT(*)_^1_%RTJ SCAN_^1_%SAP GTONE_(NO. OF RECORDS SPECIFIED_^1_%ENA 1_^1_%JMP* LTONE_^1GTONE EQU GTONE(€€*)_^1_%LDA- SCFLG,I_%CHECK IF NUMERIC_^1_%SAZ GETNUM_^1_%RTJ* (RETYP)_^1_%JMP* SCANIT_'TRY AGAIN_^1GETNUM EQU GETNUM(*)_^1_%LDA- SCNUM,I_%GET NO. OF RECORDS_^1LTONE EQU LTONE(*)_^1_%RTJ SETCNT_^1REPCT NUM $0_^1REPEAT EQU REPEAT(*)_^1_%LDQ* CLSDMB_^1_%STQ- $FF_^1_%ENA BACKSP_'REQUEST CODE_^1_%RTJ* MOTION_'GACKSPACE ONE RECORD_^1_%RAO* REPCT_(INCREMENT COUNTER_^1_%SOV ENOUG€€H_'DONE_^1_%JMP* REPEAT_'DO IT AGAIN,BABY_^1ENOUGH EQU ENOUGH(*)_^1_%JMP* (BSPACE)_$EXIT_^1RETYP ADC RETYPE_^1_%SPC 4_^1*******************************************_^1*_I*_^1*_!MOTION - USED TO PERFORM TAPE MOTION_!Z_^1*_+FUNCTIONS USING THE DMB_%*_^1*_I*_^1* CALLING SEQUENCE: ENA FUNCTION_(*_^1*_4RTJ MOTION_**_^1*_I*_^1********************************************_^1_%SPC 4_^€€1_%EXT STATUS_^1MOTION NOP 0_,ENTRY_^1_%ALS 12_+PLACE FUNCTION CODE IN UPPER BITS_^1_%STA* MOTREQ_'SAVE IN REQUEST_^1_%LDA- DEQU4,I_%GET LOGICAL UNIT CODE_^1_%STA* LOGUNT_'SAVE IN REQUEST_^1MTTREQ EQU MTTREQ(*)_^1_%RTJ- ($F4)_(MOTION REQUEST_^1_%NUM $5C00_^1_%NUM 0_^1THRD_!NUM 0_^1LOGUNT NUM 0_^1MOTREQ NUM 0_^1_%RTJ STATUS_^1_%ADC MTTREQ_^1_%SPC 2_^1_%JMP* (MOTION)_$RET€€URN WITH FUNCTION STILL GOING ON_^1_%SPC 4_^1*** FUNCTION EQUATES FOR CALLING MOTION ***_^1_%SPC 4_^1REWIND EQU REWIND(3)_^1SFILEM EQU SFILEM(5)_^1UNLOAD EQU UNLOAD(4)_^1WFILEM EQU WFILEM(2)_^1SFILEB EQU SFILEB(6)_^1BACKSP EQU BACKSP(1)_^1_%SPC 4_^1_%EXT SYSERR_^1_%SPC 4_^1*************************************************_^1*_N*_^1*CLOSE ROUTINE - TERMINATES FILE PROCESS€€ING_#*_^1*CALLING SEQUENCE: (Q) = DMB-1_/*_^1*_2RTJ CLOSE_2*_^1*_N*_^1*NOTE: THE DMB FLAG MUST BE SET TO THE_(*_^1*_%REQUIRED OPTION_8*_^1*_N*_^1*************************************************_^1_%SPC 4_^1CLOSE NOP 0_,ENTRY_^1_%LDA- DEQU0,Q_^1_%SAM CLS010_'OPEN?_^1_%ENA S1_+FILE ALREADY CLOSED_^1_%RTJ SYSERR_^1CLS010 EQU CLS010(*)_#FILE OPEN_^1_%STQ- $FF_^1_%ALS 1_^1_%S€€AM CLSWR1_'SKIP IF WRITE FILE_^1_%JMP* CLSRD1_'PROCESS READ FILE_^1CLSWR1 EQU CLSWR1(*)_^1_%ENA $10_*CHCK FOR UNWRITTEN RECORD_^1_%AND- DEQU0,I_^1_%SAZ CLS020_'SKIP IF NO UNWRITTEN RECORDS_^1_%RTJ WRITE_(WRITE LAST BLOCK_^1CLS020 EQU CLS020(*)_^1_%ENA WFILEM_^1_%RTJ* MOTION_'WRITE A FILE MARK_^1_%RTJ STATIS_'PRINT STATISTICS AFTER EACH CLOSE OF A WRITE F_^1_%LDA- DEQU0,I_^1€€_%ALS 6_,STANDARD LABEL PROCESSING?_^1_%SAP CLS030_'SKIP IF NO_^1_%RTJ CLSLAB_^1CLS030 EQU CLS030(*)_^1_%ENA 3_^1_%AND- DEQU0,I_%EQV FLAG?_^1_%INA -3_^1_%SAN CLSRD1_^1_%ENA WFILEM_^1_%RTJ* MOTION_'WRITE SECOND FILE MARK_^1CLSRD1 EQU CLSRD1(*)_^1_%ENA 3_^1_%AND- DEQU0,I_%LEAVE OPTION?_^1_%INA -2_^1_%SAN CLSRD2_'SKIP IF NO_^1_%LDA- DEQU1,I_^1_%JMP* CLSLV_(CHECK FOR LEAVE €€OPTIONS_^1CLSRD2 EQU CLSRD2(*)_^1_%ENA 1_,CHECK FOR UNLOAD_^1_%AND- DEQU0,I_^1_%ENQ REWIND_^1_%SAZ CLS040_^1_%ENQ UNLOAD_^1CLS040 EQU CLS040(*)_^1_%TRQ A_,ISSUE REWIND OR UNLAOD FUNCTION_^1_%RTJ* MOTION_^1_%LDA- DEQU0,I_^1_%ALS 6_^1_%SAP CLSRD4_^1_%RTJ RELLAB_'LABEL RELEASE_^1CLSRD4 EQU CLSRD4(*)_#FINAL PROCESSING_^1_%LDA- DEQU5,I_%RELEASE DATA BUFFERS_^1_%RTJ RELBUF_^1€€_%CLR A_^1_%STA- DEQU5,I_%CLEAR POINTER TO BUFFER_^1_%LDA- DEQU0,I_^1_%AND =N$7E7C_^1_%STA- DEQU0,I_^1_%JMP* (CLOSE)_^1_%SPC 3_^1CLSLV EQU CLSLV(*)_$PROCESSES COMPLEX LABELED AND UNLABELD_^1_%LDQ- DEQU0,I_%LEAVE OPTIONS_^1_%ALS 4_,CHECK FOR FILEMARK_^1_%SAP CLSRD5_'NO FILEMARK SIMPLY SKIP TO NEXT_^1_%QLS 1_,YES CHECK FOR WRITE FILE_^1_%SQP CLSRD7_'NOT WRITE_^1_%JMP* CLSRD3€€_'ON WRITE NO PROCESSING_^1CLSRD7 EQU CLSRD7(*)_^1_%QLS 5_,CHECK FOR LABELS_^1_%SQP CLSRD3_'NO LABELS DO NOTHING SINCE POS IS FM_^1_%LDQ- DEQU15,I_$GET ADDRESS OF DMB EXTENT_^1_%LDA- 3,Q_*RESET FILE SEQUENCE NUMBER BY -1_^1_%INA -1_^1_%STA- 3,Q_^1_%ENA $66_*NOW SKIP BACK TWO FILES- AND FINALLY ONE F_^1_%JMP* CLSRD6_^1CLSRD5 EQU CLSRD5(*)_^1_%ENA SFILEM_'NO FILE MAKR AND NO L€€ABELS_^1CLSRD6 EQU CLSRD6(*)_^1_%RTJ* MOTION_'ISSUE MOTION OPTION_^1_%LDA- DEQU0,I_%IS FILE LABELED?_^1_%AND =XMLABEL_^1_%SAZ CLSRD3_'NO IT IS NOT_^1_%ENA SFILEM_'SKIP TO HDRS OR BYPASS THEM_^1_%RTJ* MOTION_^1CLSRD3 EQU CLSRD3(*)_^1_%JMP* CLSRD4_'BYPASS LABEL BUFFER RELEASE SEGMENT_^1_%SPC 4_^1*_!DEVICE CODE ASSOCIATION TABLE_^1_%SPC 2_^1DEVICE EQU DEVICE(*)_^1_%ADC DMBTA€€B-2_^1IN_#NUM $0049_^1OUT_"NUM $004F_^1VF_#NUM $4656_^1PR_#NUM $5250_^1_%NUM $FFFF_(EBD OF TABLE_^1_%SPC 4_^1******************************_^1* DATA MANAGEMENT BLOCKS_#*_^1******************************_^1_%SPC 4_^1INPUT BZS INPUT(22)_^1OUTPUT BZS OUTPUT(22)_^1PRNDMB BZS PRNDMB(22)_^1_%SPC 4_^1OUTM1 EQU OUTM1(OUTPUT-1)_^1PRNM1 EQU PRNM1(PRNDMB-1)_^1INPM1 EQU INPM1€D(INPUT-1)_^1OCERR ALF 14,23C*INVALID OPEN OR CLOSE*;_^1_%END_]_^__DPRDWTR CSY/ U06 P€1_%NAM RDWTR_(DECK-ID U06 MAG TAPE UTILITY_$SUMMARY-106_^1*_$READS OR WRITES ONE PHYSICAL RECORD FROM MAG TAPE_^1*_$CYBER 18 / 1700 COMPUTER SYSTEMS_^1*_$SMALL SYSTEMS DIVISION, LA JOLLA, CALIFORNIA_^1*_$COPYRIGHT CONTROL DATA CORPORATION 1976_^1_%SPC 3_^1***_"PURPOSE_^1*_$-------_^1*_]_^1*******************************************_^1*** THE READ ROUTINE READS ONE PHYSICAL RECO€€RD ***_^1*** FROM A FILE - THE I-REG MUST BE SET TO THE ***_^1*** ADDRESS OF THE DMB BLOCK BEFORE CALLING READ***_^1*******************************************_^1****_!*****************************************************************_^1*_$ENTRY POINTS_^1****_!*****************************************************************_^1_%ENT READ,WRITE,RDWT_^1_%ENT STATUS,IOERR_^1****_€€!*****************************************************************_^1*_$EXTERNALS_^1****_!*****************************************************************_^1_%EXT EOFSL_^1_%EXT MOTION_^1_%EXT MESAGE_^1_%EXT SYSERR_^1_%EXT AVSEOT_^1****_!*****************************************************************_^1*_$EQUIVALENCES_^1****_!*************************************************€€****************_^1****_]_^1_%EQU ZERO($22)_#$0000_^1_%EQU LPMSK(2)_$MASK TABLE_^1_%EQU ZROMSK($13)_^1S2_#EQU S2(66)_^1S010_!EQU S010(74)_^1S011_!EQU S011(75)_^1_%EJT_]_^1READ_!NOP 0_,ENTRY POINT_^1_%LDA- DEQU0,I_^1_%SAM READOK_'OPEN FLAG SET - CONTINUE_^1_%JMP MESAGE_^1READOK EQU READOK(*)_^1_%LDA- DEQU7,I_^1_%STA- DEQU10,I_^1_%LDQ* RDUNF_^1READ1 EQU READ1(*)_^1_%RTJ* €€RDWT_)GO READ_^1_%ALS 4_,END OF FILE?_^1_%SAP RC1A1_(SKIP IF NOT END OF FILE_^1_%JMP* RC3_*GO TO END OF EFILE PROCESOR_^1RC1A1 EQU RC1A1(*)_^1_%LDA- DEQU0,I_%GET FLAG WOD_^1_%AND =X(-MEOFF)_"CLEAR ANY END OF FILE CONDITION_^1_%STA- DEQU0,I_%IF A SUCCESSFUL READ AFTER FIRST EOF_^1RC2_"EQU RC2(*)_^1_%LDA* STLOGU_'COMPTE LENGTH OF PHYSICAL RECORD_^1_%SUB* BUFFX_(STLOGU IS SET TO€€ READ LENGTH AFTER STATUS_^1_%INA 1_,ADD INCREMENT TO GET ACTUAL LENGTH_^1_%ALS 1_^1_%STA- DEQU10,I_$STORE LENGTH IN LBLK_^1REC4_!RAO- DEQU13,I_$INCREMENT NO. OF BLANKS PROCESSED_^1_%JMP* (READ)_'EXIT_^1_%EJT_]_^1RC3_"EQU RC3(*)_^1_%CLR A_,CLEAR BLOCK LENGTH_^1_%STA- DEQU10,I_$TO INDICATE A FORCED READ IF PROCESSING CONTIN_^1_%LDA- DEQU0,I_^1MEOFFL AND =XMEOFF_%CHECK FOR A PRI€€OR EOF_^1_%SAZ FEOF_)NO THIS IS THE FIRST_^1_%ENA S011_)END OF VOLUME_^1_%JMP* IOERR2_^1FEOF_!EQU FEOF(*)_^1_%LDA- DEQU0,I_%CHECK FOR LABEL PROCESSING_^1_%ALS 5_^1_%SAP EOFSLP_'CHECK FOR BYPASS LABELS_^1_%LDA =N$5005_^1_%RTJ MOTION_'SKIP EOF AND HEADR LABELS_^1_%JMP* EOFNL_(FINISH PROCESSING_^1EOFSLP EQU EOFSLP(*)_^1_%ALS 1_,CHECK FOR STANDARD LABELS_^1_%SAP EOFNL_(NO LAB€€ELS_^1_%RTJ EOFSL_(PROCESS STANDARD EOF LABELS_^1EOFNL EQU EOFNL(*)_^1_%LDA* MEOFFL+1_$SET EOF1 FLAG_^1_%ADD- DEQU0,I_^1_%STA- DEQU0,I_^1_%LDQ- DEQU2,I_^1_%SQN SEOFE_^1_%RTJ* IOERR_^1SEOFE EQU SEOFE(*)_^1_%INQ -1_^1_%JMP- 1,Q_*TAKE END OF FILE EXIT_^1RLWA_!NUM 0_^1RDUNF NUM $800_)FORMATTED READ REQUEST CODE_^1_%EJT_]_^1****************************************************_€€^1*** THE FOLLOWING EQU STATEMENTS ARE USED TO_"****_^1*** REFERENCE THE DATA MANAGEMENT BOLCK (DMB) ****_^1****************************************************_^1_%EQU DEQU0(1)_$IOBFLG -_#DEVICE DEPENDENT INFO_^1_%EQU DEQU1(DEQU0+1) RESERVED_^1_%EQU DEQU2(DEQU1+1) EOFADR -_#ADDR. - USER EOF ROUTINE_^1_%EQU DEQU3(DEQU2+1) ERREXT -_#ADDR. - USER ERROR PROC._^1_%EQU DEQU4(DE€€QU3+1) LOG1 -_%LOGICAL UNIT NO._^1_%EQU DEQU5(DEQU4+1) ABUFFP =_#ADDR. - USER BUFFER POOL_^1_%EQU DEQU6(DEQU5+1) LBUFFP -_#LENGTH OF BUFFER POOL_^1_%EQU DEQU7(DEQU6+1) MAXBLK -_#MAXI. BLOCKSIZE TO RD/WR_^1_%EQU DEQU8(DEQU7+1) RECSIZ -_#MAXI. SIZE -LOGICAL RECORD_^1_%EQU DEQU9(DEQU8+1) ABLK -_%ADDR. - CURRENT BLOCK_^1_%EQU DEQU10(DEQU9+1) LBLK -_%LENGTH OF CURRENT BLOCK€€_^1_%EQU DEQU11(DEQU10+1) ARECL -_$ADDR.-CURRENT LOG. RECORD_^1_%EQU DEQU12(DEQU11+1) LRECL -_$LENGTH OF CURRENT LOG REC_^1_%EQU DEQU13(DEQU12+1) BLKCNT -_#NO. OF BLOCKS PROCESSED_^1_%EQU DEQU14(DEQU13+1) RECCNT_%NO. OF RECORDS PROCESSED_^1_%EQU DEQU15(DEQU14+1) ALABEL -_#ADDR.-LABEL PROCESSOR_^1_%EQU DEQU16(DEQU15+1) FORD -_%FILE ORDINAL_^1_%EQU DEQU17(DEQU16+1) RECO€€RD -_#RECORD ORDINAL_^1_%EQU DEQU18(DEQU17+1) ACONV -_$ADDR.-CONVERSION ROUTINE_^1_%EQU DEQU19(DEQU18+1) ASLCT1 -_#ADDR.-SELECTION ROUTINE 1_^1_%EQU DEQU20(DEQU19+1) ASLCT2 -_#ADDR.-SELECTION ROUTINE 2_^1_%EQU DEQU21(DEQU20+1) ASLCT3 -_#ADDR.-SELECTION ROUTINE 3_^1_%EJT_]_^1******************************************_^1*_"EQUATES FOR IOBFLG % MASKS_(*_^1*********************€€*********************_^1*_"MASKS_]_^1_%SPC 4_^1MRDWRF EQU MRDWRF($4000)_^1MBLOCK EQU MBLOCK($2000)_^1MRECFM EQU MRECFM($1800)_^1MLABEL EQU MLABEL($600)_^1MEOVF EQU MEOVF($100)_^1MEOFF EQU MEOFF($80)_^1MRESRV EQU MRESRV($10)_^1MCONVF EQU MCONVF($60)_^1MSELTF EQU MSELTF($C)_^1MCLOSF EQU MCLOSF($3)_^1_%SPC 4_^1*IOBFLG_]_^1_%SPC 4_^1RDWRF EQU RDWRF(MRDWRF)_^1BLOCKF EQU€€ BLOCKF(MBLOCK)_^1UNDREC EQU UNDREC(0)_^1FIXREC EQU FIXREC($800)_^1VARREC EQU VARREC($1000)_^1NOLBL EQU NOLBL(0)_^1STNDLB EQU STNDLB($200)_^1BYPSLB EQU BYPSLB($400)_^1EOVF_!EQU EOVF(MEOVF)_^1EOFF_!EQU EOFF(MEOFF)_^1NOCONV EQU NOCONV(0)_^1ETOASC EQU ETOASC($20)_^1BTOASC EQU BTOASC($40)_^1CLREW EQU CLREW(0)_^1CLUNL EQU CLUNL($1)_^1CLLEAV EQU CLLEAV($2)_^1CLEAOV EQU €€ CLEOV($3)_^1_%EJT_]_^1************************************************_^1*** THIS IS THE ROUTINE THAT OUTPUTS THE **_^1*** READ OR WRITE FUNCTION_2**_^1*_$ON ENTRY Q CONTAINS THE REQUEST FUNCTION CODE_^1*_]_^1RDWT_!NOP 0_,READ/WRITE REQUEST_^1_%TRQ A_^1_%EOR- $31_*SET D BIT IN REQUEST ($4000)_^1_%STA* REQCD_^1_%LDA- DEQU4,I_^1_%STA* RDLUN_^1_%LDA- DEQU9,I_^1_%STA* BUFFX_^1_%LD€€Q- DEQU10,I_^1_%LRS 1_^1_%SAP RDWT05_^1_%INQ 1_^1RDWT05 EQU RDWT05(*)_^1_%STQ* BUFFL_^1*_$ACTUAL REQUEST TO DO I/O_^1_%RTJ- ($F4)_(ISSUE REQUEST_^1REQCD NUM 0_,REQUEST CODE_^1_%NUM 0_^1RDTHD NUM 0_,THREAD_^1RDLUN NUM 0_,LOGICAL UNIT NUMBER_^1BUFFL NUM 0_,BUFFER LENGTH_^1BUFFX NUM 0_,BUFFER ADDRESS_^1_%SPC 4_^1_%RTJ* STATUS_^1_%ADC REQCD-1_^1RDONE1 JMP* (RDWT)_'EXIT€€_^1_%EJT_]_^1******************************************_^1*** THIS ROUTINE WRITES A RECORD ON THE **_^1*** SPECIFIED FILE_6**_^1********************************************_^1WRITE NOP 0_,ENTRY_^1_%LDA- DEQU0,I_%OPEN FLAG MUST BE SET_^1_%SAM OPENX_^1_%JMP MESAGE_^1OPENX ALS 1_^1_%SAM WRIF2_(OK - CONTINUE WITH WRITE_^1WRIF1 EQU WRIF1(*)_^1_%RTJ* IOERR_^1WRIF2 EQU WRIF2(€€*)_^1_%LDQ* WTUNF_^1WRITE1 EQU WRITE1(*)_^1_%RTJ* RDWT_)GO WRITE_^1_%RAO- DEQU13,I_$COUNT THE NUMBER OF BLOCKS_^1_%LDA* TYPCOD_^1_%ARS 11_+GET EQUIPMENT CLASS CODE_^1_%AND- LPMSK+3_^1_%INA -1_+CHECK IF MAG TAPE_^1_%SAN NEOT_)SKIP IF NOT_^1_%LDA- DEQU1,I_%FETCH DEVICE STATUS_^1_%LDQ- DEQU0,I_^1_%LLS 6_,CHECK FOR EOT_^1_%SAP NEOT_)STATUS SAYS NOT EOT_^1_%SQM LABELE_'IOBFLG IND€€ICATES LABELED SO PROCESS EOV LABELS_^1_%QLS 3_,IOBFLG INDICATES IGNORE EOT_^1_%SQM NEOT_^1_%ENA S010_)ISSUE SYSTEM ERROR MESSAGE_^1_%JMP* IOERR2_^1LABELE EQU LABELE(*)_^1_%RTJ AVSEOT_'GO TO AUTOMATIC VOLUME SEQUENCE OPERATION_^1NEOT_!EQU NEOT(*)_^1_%JMP* (WRITE)_%BLOCKS PROCESSED_^1WTUNF NUM $C00_)FORMATTED WRITE REQUEST CODE_^1TYPCOD NUM 0_^1_%SPC 4_^1******************€€***************************************_^1*IOERR - CHECKS FOR DMB ERROR EXIT_5*_^1*AND ISSUES ERROR_F*_^1*********************************************************_^1IOERR NOP 0_^1_%ENA S2_^1IOERR2 EQU IOERR2(*)_^1_%RTJ SYSERR_^1_%EJT_]_^1******************************************************_^1*STATUS ROUTINE - SET DMB WORD 2 TO CURRENT_)*_^1*DEVICE STATUS_F*_^1***************€€***************************************_^1_%SPC 4_^1STATUS NOP 0_^1_%LDQ* (STATUS)_^1_%LDA- 3,Q_*WAIT FOR COMPLETION_^1_%SAZ ST010_^1_%JMP* *-2_^1ST010 EQU ST010(*)_^1_%LDA- $FF_*SAVE I REG_^1_%STA* IOERR_^1_%LDA- DEQU4,I_^1_%AND- $E_+MASK OUT LU ($FFF)_^1_%STA* STLOGU_'SET LOGICAL UNIT_^1_%SPC 4_^1_%RTJ- ($F4)_^1_%NUM $600_)STATUS REQUEST_^1STLOGU NUM 0,0_^1*_]_^1*_*STATUS€€ SUBROUTINE ---_^1*_*TO AVOID PROBLEMS WITH USE OF THE BUFFERED MSOS PROTECT_^1*_*PROCESSOR THIS ROUTINE DOES NOT DEPEND ON RETURN OF THE_^1*_*LWA OF THE BUFFER IN THE I-REG._^1*_]_^1_%STQ* TYPCOD_'SAVE WORD 8 OF PHYSTAB_^1_%LDQ* IOERR_(RESET I-REG_^1_%STQ- I_^1_%STA- DEQU1,I_%SAVE STATUS FROM STATUS REQUEST_^1_%LDQ* BUFFX_(START ADR OF BUFFER_^1_%ADQ* BUFFL_(ADD BUFFER LENGTH_^1_€€%INQ -1_+Q = LWA OF BUFFER_^1_%LDA* RDLUN_(CHECK FOR SHORT READ_^1_%ALS 1_^1_%SAP NOTSRD_'SKIP IF NOT SHORT READ_^1_%LDQ- (ZERO),Q_$GET ACTUAL LWA OF RECORD_^1_%INQ -1_^1NOTSRD STQ* STLOGU_'SAVE LWA IN STLOGU TEMP FOR READ ROUTINE_^1_%LDA- DEQU1,I_%STATUS READ FROM STATUS REQUEST_^1_%LDQ* (STATUS)_^1_%LDQ- 4,Q_*CHECK V FIELD_^1_%SQP ST020_^1_%ALS 4_^1_%SAM ST019_^1_%RTJ* IOE€lRR_^1ST019 EQU ST019(*)_^1_%ALS 12_^1ST020 EQU ST020(*)_^1_%RAO* STATUS_^1_%JMP* (STATUS)_^1_%END_]_^__lPLIOC CSY/ U07 P€1_%NAM LIOC_)DECK-ID U07 MAG TAPE UTILITY_$SUMMARY-106_^1*_$MOVES A BLOCK OF DATA IN CORE_^1*_$CYBER 18 / 1700 COMPUTER SYSTEMS_^1*_$SMALL SYSTEMS DIVISION, LA JOLLA, CALIFORNIA_^1*_$COPYRIGHT CONTROL DATA CORPORATION 1976_^1*_]_^1***_"PURPOSE_^1*_$-------_^1*_]_^1****_!*****************************************************************_^1*_$ENTRY POINTS_^1_%ENT PUTIT,GETFF_^1****€€_!*****************************************************************_^1_%ENT GETMOV,GETLOC,MOVE,PUTMOV,PUTLOC_^1****_!*****************************************************************_^1*_$EXTERNALS_^1****_!*****************************************************************_^1_%EXT CVASEB_'EBCDIC - ASCII CONVERSION ROUTINE_^1_%EXT READ,WRITE,RDWT,LBYTE,SBYTE_^1_%ENT PUTIT_^1_%ENT €€ GETFF_^1_%EXT SYSERR_^1_%EXT SELECT_^1****_!*****************************************************************_^1*_$EQUIVALENCES_^1****_!*****************************************************************_^1_%EQU LPMSK(2)_^1****_]_^1S3_#EQU S3(67)_^1S5_#EQU S5(69)_^1S6_#EQU S6(70)_^1*** THIS ROUTINE MOVES THE RECORD TO A SPECIFIED AREA ***_^1GETMOV NOP 0_,ENTRY_^1_%LDA* (GETM€€OV)_$GET MOVE ADDRESS_^1_%ALS 1_,CONVERT TO CHARACTER ADDRESS_^1_%STA* MOVADR_'STORE AS THE TO ADDRESS_^1_%RTJ* GETLOC_'GET A RECORD_^1_%INQ -1_+SET TO DMB -1_^1_%LDA- DEQU12,Q_$GET THE RECORD LENGTH FOR MOVE_^1_%LDQ- DEQU11,Q_$GET THE RECORD ADDRESS FROM DMB_^1_%QLS 1_^1_%RTJ* MOVE_)MOVE THE RECORD TO USER AREA_^1MOVADR NUM 0_,CHARACTER ADDRESS OF WHRE TO MOVE RECORD_^1_%LDQ* €€GTLOCQ_'RESET Q TO DMB ADDRESS_^1_%RAO* GETMOV_^1_%JMP* (GETMOV)_$RETURN TO CALLER_^1_%SPC 4_^1******************************************_^1*_G*_^1* MOVE ROUTINE - MOVE A BLOCK OF DATA_!*_^1* FROM ONE CORE LOCATION TO ANOTHER_#*_^1*_G*_^1* CALLING SEQUENCE: RTJ MOVE_**_^1*_4ADC ADDRESS TO_#*_^1*_!(A) = NUMBER OF CHARACTERS TO MOVE_!*_^1*_!(Q) = CHARACTER ADDRESS OF FROM LOC *€€_^1*_G*_^1******************************************_^1_%SPC 4_^1MOVE_!NOP 0_,ENTRY TO MOVE_^1_%STQ* FROM_)FROM ADDRESS IN Q_^1_%LDQ* (MOVE)_'GET TO ADDRESS_^1_%STQ* TO_^1_%RTJ SETCNT_'SET OVERFLOW COUNTER BASED ON (A)_^1COUNT NUM 0_,MOVE COUNTER_^1_%EXT SETCNT_^1NEXT_!LDQ* FROM_^1_%RTJ LBYTE_(GET A CHARACTER_^1_%STQ* FROM_^1_%LDQ* TO_^1_%RTJ SBYTE_^1_%STQ* TO_^1_%RAO* COUN€€T_^1_%SOV DONE_)CHECK LAST CHARACTER OF MOVE_^1_%JMP* NEXT_)CONTINUR MOVE_^1DONE_!RAO* MOVE_^1_%JMP* (MOVE)_'RETURN TO CALLER_^1FROM_!NUM 0_^1TO_#NUM 0_^1_%SPC 4_^1**************************************************_^1***************************************************_^1*** GETLOC SETS A POINTER TO THE NEXT LOGICAL RECORD **_^1***************************************************€€_^1GETLOC NOP 0_,ENTRY_^1_%LDA- $FF_^1_%STA* GETFF_^1_%STQ- $FF_^1GETNXT EQU GETNXT(*)_#RE-ENTRY FOR NEQ SELECTION_^1_%LDA- DEQU12,I_$COMPUTE NEXT RECORD ADDRESS - ARECL = ARECL+LR_^1_%ARS 1_,LRECL/2_^1_%ADD- DEQU11,I_$RESULT_^1_%STA- DEQU11,I_$RESET ARECL_^1_%LDA- DEQU10,I_$COMPUTE LWA OF BUFFER - ABLK+LBLK/2_^1_%ARS 1_,LBLK/2_^1_%ADD- DEQU9,I_%LWA - NOW CHECK IF ANY ROOM IS L€€EFT IN BUFFER_^1_%SUB- DEQU11,I_^1_%SAM GETL4_(THERE IS A COMPLETE RECORD - SKIP_^1_%SAZ GETL4_(YES-SKIP_^1GETL1 LDA- DEQU0,I_%IS THE RECORD VARIABLE LENGTH_^1_%AND* N1800_(MASK OUT ALL BITS BUT 11 AND 12_^1_%ARS 11_^1_%SAN GETL2_^1_%LDA- DEQU10,I_$RECORD IS UNDEFINED_^1_%STA- DEQU12,I_^1_%JMP* GETLC_(GO CHECK FOR CONVERT_^1GETL4 JMP* GETL4A_^1GETL2 INA -2_+IS RECORD VARIAB€€LE LENGTH_^1_%SAZ GETL2A_'YES-SKIP_^1_%LDA- DEQU8,I_%NO-SET LRECL - RECSIZ_^1_%STA- DEQU12,I_^1_%JMP* GETLC_^1GETL2A LDA- DEQU11,I_^1*_.PICK UP RDW TO CHECK LENGTH FOR READ_^1_%STA* GETLH_^1_%LDA* (GETLH)_^1_%SUB- DEQU8,I_%IS IT GREATER THEN MAX. ALLOWED_^1_%SAM GET3_)NO-SKIP_^1_%SAZ GET3_)ZERO OK_^1VERR1 EQU VERR1(*)_^1_%ENA S3_^1SERR_!EQU SERR(*)_^1_%RTJ SYSERR_'GO TO ER€€ROR ROUITNE_^1GET3_!LDA* (GETLH)_%RECORD LENGTH_^1_%INA -4_+STORE IT IN CURRENT LOG. REC. LENGTH_^1_%STA- DEQU12,I_^1_%RAO- DEQU11,I_$INCREMENT ADDRS OF CURRENT_^1_%RAO- DEQU11,I_$LOG. REC BY TWO_^1GETLC EQU GETLC(*)_^1_%ENA $20_^1_%AND- DEQU0,I_%IF SET CALL ECONV OTHERWISE SKIP AROUND_^1_%SAZ GETL5_^1_%SET Q_,SET CONVERSION TO EBDIC TO ASCII_^1_%RTJ* ECONV_(CONVERT_^1GETL5 €€LDA- DEQU0,I_%WAS A SELECTION OPTION MADE_^1GETLCF EQU GETLCF(*)_^1_%ALS 12_+IS SELECTION BEING USED_^1_%SAP GETLCE_'NO SKIP_^1_%RTJ SELECT_'CALL SELECTION_^1_%SAM GETLCE_'IF TRUE RECORD IS SELECTED_^1_%JMP* GETNXT_'NOT SELECTED TRY NEXT RECORD_^1GETLCE RAO- DEQU14,I_^1_%LDQ- $FF_^1_%LDA* GETFF_^1_%STA- $FF_^1_%SNO 0_,CLEAR OVER FLOW_^1_%JMP* (GETLOC)_^1GTLOCQ NUM 0_^1GETL4A€€ RTJ READ_)GO-READ_^1_%LDA- DEQU9,I_%STORE ADDR OF CURR BLOCK AS_^1_%STA- DEQU11,I_$ADDRS OF CURRENT LOGICAL RECORD_^1_%LDA- DEQU0,I_%IS RECORD VARIABLE LENGTH AND_^1_%CLR Q_,CHECK FOR VARIABLE BLOCKED RECORDS_^1_%LLS 4_,OPEN,READ,BLOCK AND VARIABLE BITS IN Q - EXPEC_^1_%INQ -$B_^1_%SQZ GETL7_(IF ZERO VARIABLE BLOCKED_^1_%JMP* GETL1_(NOT VARIABLE BLOCKED TRY VARIABLE NEXT_^1GE€€TL7 EQU GETL7(*)_^1_%LDQ- DEQU9,I_%ADDRESS OF BLOCK_^1_%INQ -1_^1_%LDA- 1,Q_*OBTAIN BDW FROM FIRST WORD OF BLOCK_^1_%SUB- DEQU10,I_$COMPARE TO ACTUAL LENGTH READ_^1_%SAZ GETL8_(IF ZERO OK_^1_%JMP* VERR1_(NOT ZERO MUST HAVE READ ERROR_^1GETL8 EQU GETL8(*)_^1_%INQ 3_,RESET RECORD POINTER TO BEYOND BDW_^1_%STQ- DEQU11,I_$NOW PROCESS AS VARIABEL_^1_%JMP* GETL2A_^1GETLH NUM 0_,€€RDW OF RECORD BLOCK_^1GETFF NUM 0_,I-SAVE_^1****************************************************_^1*** THE FOLLOWING EQU STATEMENTS ARE USED TO_"****_^1*** REFERENCE THE DATA MANAGEMENT BOLCK (DMB) ****_^1****************************************************_^1_%EQU DEQU0(1)_$IOBFLG -_#DEVICE DEPENDENT INFO_^1_%EQU DEQU1(DEQU0+1) RESERVED_^1_%EQU DEQU2(DEQU1+1) EOFADR -_#ADD€€R. - USER EOF ROUTINE_^1_%EQU DEQU3(DEQU2+1) ERREXT -_#ADDR. - USER ERROR PROC._^1_%EQU DEQU4(DEQU3+1) LOG1 -_%LOGICAL UNIT NO._^1_%EQU DEQU5(DEQU4+1) ABUFFP =_#ADDR. - USER BUFFER POOL_^1_%EQU DEQU6(DEQU5+1) LBUFFP -_#LENGTH OF BUFFER POOL_^1_%EQU DEQU7(DEQU6+1) MAXBLK -_#MAXI. BLOCKSIZE TO RD/WR_^1_%EQU DEQU8(DEQU7+1) RECSIZ -_#MAXI. SIZE -LOGICAL RECORD_^1_%EQU DEQU€€9(DEQU8+1) ABLK -_%ADDR. - CURRENT BLOCK_^1_%EQU DEQU10(DEQU9+1) LBLK -_%LENGTH OF CURRENT BLOCK_^1_%EQU DEQU11(DEQU10+1) ARECL -_$ADDR.-CURRENT LOG. RECORD_^1_%EQU DEQU12(DEQU11+1) LRECL -_$LENGTH OF CURRENT LOG REC_^1_%EQU DEQU13(DEQU12+1) BLKCNT -_#NO. OF BLOCKS PROCESSED_^1_%EQU DEQU14(DEQU13+1) RECCNT_%NO. OF RECORDS PROCESSED_^1_%EQU DEQU15(DEQU14+1) ALABEL -_#AD€€DR.-LABEL PROCESSOR_^1_%EQU DEQU16(DEQU15+1) FORD -_%FILE ORDINAL_^1_%EQU DEQU17(DEQU16+1) RECORD -_#RECORD ORDINAL_^1_%EQU DEQU18(DEQU17+1) ACONV -_$ADDR.-CONVERSION ROUTINE_^1_%EQU DEQU19(DEQU18+1) ASLCT1 -_#ADDR.-SELECTION ROUTINE 1_^1_%EQU DEQU20(DEQU19+1) ASLCT2 -_#ADDR.-SELECTION ROUTINE 2_^1_%EQU DEQU21(DEQU20+1) ASLCT3 -_#ADDR.-SELECTION ROUTINE 3_^1************€€*****************************_^1_%SPC 4_^1*****************************************_^1* ECONV - IF Q=FFFF CONVERT FROM_%*_^1*_)ASCII TO EBCDIC. OTHERWISE, *_^1*_)CONVERT FROM EBCDIC TO ASCII *_^1*****************************************_^1_%SPC 4_^1ECONV NOP 0_,ENTRY_^1_%LDA- DEQU12,I_$GET RECORD LENGTH_^1_%LRS 1_,CONVERT TO WORD LENGTH WITH CONV FLAG_^1_%SAP ECON1_(CHECK I€€F EBCDIC TO ASCII_^1_%AND- LPMSK+15_$IF SO, GET COMPLIMENT OF LENGTH_^1_%TCA A_^1ECON1 STA* ELEN_)STORE IN REQUEST_^1_%LDA- DEQU11,I_$GET RECORD ADDRESS_^1_%STA* EAREC_(SET IN REQUEST_^1_%RTJ CVASEB_'JUMP TO CONVERSION ROUTINE_^1EAREC ADC 0_,ADDRESS OF BUFFER_^1_%ADC ELEN_^1_%JMP* (ECONV)_%RETURN WITH CONVERTED RECORD_^1ELEN_!NUM 0_,BUFFER LENGTH_^1_%SPC 4_^1*_F*_^1*_!PUTMO€€VE ROUTINE TO PLACE A RECORD_!*_^1*_*INTO THE BUFFFER._**_^1* CALLING SEQUENCE: RTJ PUTMOV_'*_^1*_4ADC OF RECORD_#*_^1*_-(Q) - DMB ADDRESS-1_$*_^1*_-LRECL - LENGTH OF RECORD *_^1*_F*_^1*****************************************_^1_%SPC 4_^1PUTMOV NOP 0_,ENTRY_^1_%STQ* PTMV1_^1_%LDA- DEQU11,Q_$GET "TO" ADDRESS_^1_%ALS 1_^1_%STA* MOVAD2_^1_%LDA- DEQU12,Q_$GET LENGTH_^1_%LDQ* (PUT€€MOV)_$GET FROM ADDRESS IN Q_^1_%QLS 1_^1_%RTJ MOVE_)MOVE THE RECORD INTO THE BUFFER_^1MOVAD2 NUM 0_^1_%RAO* PUTMOV_^1_%LDQ* PTMV1_^1_%RTJ* PUTLOC_'WRITE_^1_%JMP* (PUTMOV)_^1_%SPC 4_^1**************************************************_^1*** PUTLOC SETS A POINTER TO THE NEXT AVAILABLE AREA **_^1*** FOR A LOGICAL RECORD_;**_^1PUTLOC NOP 0_,ENTRY_^1_%LDA- $FF_^1_%STA* GETFF_^1_%€€STQ- $FF_^1_%ENA -$10_^1_%AND- DEQU0,I_%IS A CONVERSION NECESSARY_^1_%STA- DEQU0,I_^1_%ALS 10_^1_%SAP PUT1_^1_%CLR Q_,SET CONVERSION FLAG FOR ASCII TO EBDIC_^1_%RTJ* ECONV_(CALL CONVERSION_^1PUT1_!LDA- DEQU10,I_^1_%ADD- DEQU12,I_$INCREMENT BLOCK SIZE_^1_%STA- DEQU10,I_^1_%LDA- DEQU0,I_%IS RECORD FORMAT OF UNDEFINED LENGTH_^1_%CLR Q_^1_%LLS 5_,COMPUTE TYPE OF RECORD_^1_%INQ -€€$18_)GET RID OF UNWANTED BITS_^1_%JMP* TYPE,Q_'USE BRANCH TABLE_^1_%SPC 3_^1TYPE_!EQU TYPE(*)_^1_%JMP* PUTBLK_'UNDEFINED WRITE RECORD_^1_%JMP* FIXED_^1_%JMP* VARREC_'VARIABLE UNBLOCKED RECORD_^1N1800 NUM $1800_(NOT POSIBLE SO USE AS CONSTANT_^1PTMV1 NUM 0_,NOT POSSIBLE SO USE IN PUT MOV_^1_%JMP* FIXED_(FIXED BLOCK REQUIRES NO SPECIAL PROCESSING_^1VARBLK EQU VARBLK(*)_#ENTER €€FOR VARIABLE BLOCKED RECORDS_^1_%SPC 2_^1_%LDA- DEQU10,I_$COMPUTE BDW EACH TIME_^1_%INA 4_,DO NOT RESET LBLK AT THIS TIME_^1_%LDQ- DEQU9,I_%GET ADDRESS OF ABLK_^1_%INQ -1_^1_%STA- 1,Q_*SET UPPER BDW TO LENGTH_^1_%CLR A_^1_%STA- 2,Q_*SET LOWER BDW_^1VARREC EQU VARREC(*)_^1_%LDA- DEQU10,I_$SET LBLK UP BY 4_^1_%INA 4_^1_%STA- DEQU10,I_^1_%LDA- DEQU12,I_$COMPUTE LRELC AND RDW_^1_€€%INA 4_^1_%STA- DEQU12,I_^1_%LDQ- DEQU11,I_$LOCATE RDW ADDRESS_^1_%INQ -3_^1_%STA- 1,Q_*SET UPPER RDW_^1_%SUB- DEQU8,I_%CHECK FOR PROPER SIZE OF RECORD_^1_%SAZ VAROK_^1_%SAM VAROK_^1_%ENA S5_+VARIABLE SIZE ERROR_^1SERR2 JMP* SERR_)SERIOUS ERROR_^1VAROK EQU VAROK(*)_^1_%CLR A_,SET LOWER RDW IF OK_^1_%STA- 2,Q_^1_%SPC 2_^1BLKCHK EQU BLKCHK(*)_^1_%LDA- DEQU7,I_%CHECK FOR RO€€OM IN BLOCK_^1_%SUB- DEQU8,I_^1_%SUB- DEQU10,I_$(A) = MAXBLK - MAXREC - LBLK_^1*_!(A) = + ROOM LEFT IN BLOCK_^1*_!(A) = - MUST WRITE_^1_%SAM PUTBLK_^1_%LDA- DEQU12,I_^1_%ARS 1_^1_%ADD- DEQU11,I_^1_%STA- DEQU11,I_$AREC + LRECL_^1_%LDA- DEQU0,I_%SET UNWRITTEN BLOCK FLG_^1_%INA $10_^1_%STA- DEQU0,I_^1_%SPC 4_^1PUTEX EQU PUTEX(*)_^1_%LDA* GETFF_(RESET FOR RETURN_^1_%LDQ- $FF_*RE€€SET Q_^1_%STA- $FF_*RESET I_^1_%RAO- DEQU14,Q_$UP RECORD COUNT_^1_%LDA- DEQU11,Q_$(A) ARECL_^1_%SNO 0_,CLEAR OVERFLOW_^1_%JMP* (PUTLOC)_$RETURN_^1_%SPC 4_^1PUTBLK EQU PUTBLK(*)_^1_%RTJ WRITE_(WRITE THE RECORD_^1_%LDA- DEQU9,I_^1_%STA- DEQU11,I_$RESET AREC TO ABLK_^1_%CLR Q_^1_%STQ- DEQU10,I_$CLEAR LBLK_^1_%RTJ* PUTIT_(INITIALIZE FOR NEXT BLOCK_^1_%JMP* PUTEX_(EXIT_^1_%SPC 3_^€€1FIXED EQU FIXED(*)_^1_%LDA- DEQU12,I_^1_%SUB- DEQU8,I_%LRECL = MAXREC_^1_%SAZ FIXOK_(NOT EQUAL N_^1_%ENA S6_+IT IS AN ERROR_^1_%JMP* SERR2_^1FIXOK JMP* BLKCHK_'CONTINUE_^1_%SPC 4_^1PUTIT NOP 0_^1_%LDA- DEQU0,I_%RECORD VARIABLE LENGTH_^1_%ALS 1_^1_%SAP PUT10_(IF READ FILE - EXIT_^1_%ARS 13_+PLACE WRITE, BLK, REC_^1*_+FLAGS IN BITS 2,1,0_^1_%ENQ 7_^1_%LAQ A_^1_%ENQ 2_^€H1_%INA -5_+VARIABLE_^1_%SAZ PUTVAR_'SKIP IF VAR_^1_%INA -2_+VAR BLOCKED_^1_%SAM PUT10_(SKIP IF NOT - EXIT_^1_%ENA 4_^1_%ADD- DEQU10,I_$INCREMENT LBLK_^1_%STA- DEQU10,I_$BY 4 TO ACCOUNT FOR BDW_^1_%ENQ 4_^1PUTVAR ADQ- DEQU11,I_$SET AREC TO BY PASS_^1_%STQ- DEQU11,I_$BDW AND RDW_^1PUT10 JMP* (PUTIT)_%EXIT_^1_%END_]_^__ HPCOPY CSY/ U08 P€1_%NAM COPY_)DECK-ID U08 MAG TAPE UTILITY_$SUMMARY-106_^1*_$COPIES MAG. TAPE FILES_^1*_$CYBER 18 / 1700 COMPUTER SYSTEMS_^1*_$SMALL SYSTEMS DIVISION, LA JOLLA, CALIFORNIA_^1*_$COPYRIGHT CONTROL DATA CORPORATION 1976_^1*_]_^1***_"PURPOSE_^1*_$-------_^1*_]_^1***********************************************************_^1*** THE COPY MODULE PERFORMS THE BASIC UTILITY FUNCTION ***_^€€1*** OF COPYING MAGNETIC TAPE FILES_5***_^1************************************************************_^1****_!*****************************************************************_^1*_$ENTRY POINTS_^1****_!*****************************************************************_^1_%ENT COPY_^1****_!*****************************************************************_^1*_$EXTERNALS_^1****_!**€€***************************************************************_^1_%EXT COUNT1,COUNT2_^1_%EXT INPM1_^1_%EXT SYSERR_^1_%EXT INPUT,OUTPUT_^1_%EXT RCOUNT,FCOUNT,SPARM_^1_%EXT SCCB,GETLOC,PUTMOV_^1_%EXT FPARM,CLOSE,OPEN_^1****_!*****************************************************************_^1*_$EQUIVALENCES_^1****_!*************************************************************€€****_^1****_]_^1_%EQU DEQU11(12)_^1_%EQU DEQU12(DEQU11+1)_^1W3_#EQU W3(3)_^1_%EXT MESAGE_^1_%EXT STNDMP_^1_%EXT STATIS_^1_%SPC 4_^1DEQU0 EQU DEQU0(1)_^1COPY_!NOP 0_,ENTRY_^1_%LDA* (COPYI)_%IS INPUT DMB OPEN_^1_%SAP COPYE1_'NO-SKIP(ERROR)_^1_%LDA* (COPYO)_%IS OUTPUT DMB OPEN_^1_%SAM COPY1_(YES-SKIP_^1COPYE1 JMP MESAGE_^1_%JMP* (COPY)_^1COPY1 EQU COPY1(*)_^1_%ENQ 8_^1€€_%LDA* (COPYI),Q_#GET LENGTH OF CURRENT RECORD_^1_%STA* CLRECL_'FROM INPUT DMB AND SAVE_^1_%LDA* (COPYO),Q_#GET LENGTH OF CURRENT RECORD_^1_%SUB* CLRECL_'FROM OUTPUT DMB AND COMPARE_^1_%SAZ COPY2_(THE TWO FOR EQUAL VALUES_^1_%ENA W3_^1_%RTJ SYSERR_^1COPY2 EQU COPY2(*)_^1_%RTJ STNDMP_'INITIALIZE FOR STANDARD PARAMETERS_^1COPY3 LDQ* COPIM1_'GET ADDR. OF INPUT DMB-1_^1_%LDA =X€€COPEOF_$END OF FILE ADDRS PROCESSOR_^1_%STA- DEQU2,Q_%STORE ADDR IN INPUT DMB EORADR_^1_%RTJ GETLOC_^1_%LDQ* COPIM1_'GET ADDR, OF INPUT DMB-1_^1_%LDA- DEQU11,Q_$GET ADDRS. OF CURRENT RECORD FOR PUTMOV_^1_%STA* COPY3A_^1_%LDA- DEQU12,Q_$STORE LENGTH OF RECORD IN OUTPUT DMB_^1_%LDQ* COPYO_^1_%INQ -1_^1_%STA- DEQU12,Q_^1_%RTJ PUTMOV_^1COPY3A NUM 0_^1_%RTJ COUNT1_^1_%SAZ COPY5_^1€€_%JMP* COPY3_^1COPY5 EQU COPY5(*)_^1_%JMP* (COPY)_'EXIT_^1**** END OF FILE ROUTINE **********_^1COPEOF RTJ COUNT2_^1_%SAN COPY6_^1_%JMP* COPY5_^1COPY6 EQU COPY6(*)_^1_%LDQ* COPYO_^1_%INQ -1_^1_%ENA -3_^1_%AND- DEQU0,Q_^1_%INA 2_^1_%STA- DEQU0,Q_^1_%RTJ CLOSE_^1_%LDQ- $FF_^1_%RTJ OPEN_^1_%JMP* COPY3_^1CLRECL NUM 0_^1COPYI ADC INPUT_^1COPYO ADC OUTPUT_^1COPIM1 ADC €&INPM1_^1_%EQU DEQU2(3)_^1_%END_]_^__ &PEXIT CSY/ U09 P€1_%NAM EXIT_)DECK-ID U09 MAG TAPE UTILITY_$SUMMARY-106_^1*_$CLOSES THE DATA MANAGEMENT BLOCKS AND EXITS_^1*_$CYBER 18 / 1700 COMPUTER SYSTEMS_^1*_$SMALL SYSTEMS DIVISION, LA JOLLA, CALIFORNIA_^1*_$COPYRIGHT CONTROL DATA CORPORATION 1976_^1*_]_^1***_"PURPOSE_^1*_$-------_^1*_]_^1***THIS FUNCTION CLOSES THE DATA MANAGE-**_^1***MENT BLOCKS AND EXITS TO SYSTEM READY**_^1****_!*******€€**********************************************************_^1*_$ENTRY POINTS_^1****_!*****************************************************************_^1_%ENT EXIT_^1_%EXT INPM1,OUTM1,PRNM1,CLOSE,UNLOD,CLSDMB_^1_%EXT FMTMSG_^1****_!*****************************************************************_^1*_$EXTERNALS_^1****_!************************************************************€€*****_^1****_!*****************************************************************_^1*_$EQUIVALENCES_^1****_!*****************************************************************_^1****_]_^1EXIT_!NOP 0_,ENTRY_^1_%ENQ 1_^1_%LDA* (EXCI),Q_$IS INPUT DMB OPEN_^1_%LDQ* EXCI_^1_%RTJ* EXCL_)CLOSE INPUT DMB_^1EX1_"LDA* (EXCO),Q_$IS OUTPUT DMB OPEN_^1_%LDQ* EXCO_^1_%RTJ* EXCL_)CLOSE OUTPUT DMB_^€€1EX2_"LDA* (EXPR),Q_$IS PRINT DMB OPEN_^1_%LDQ* EXPR_^1_%RTJ* EXCL_)CLOSE PRINT DMB_^1EX3_"RTJ FMTMSG_^1_%ADC EXED_^1_%RTJ- ($F4)_(EXIT TO TAPE SCOPE_^1_%ADC $0A00_^1EXCL_!NOP 0_,ENTRY_^1_%SAP EXCX_^1_%STQ CLSDMB_^1_%RTJ UNLOD_(SET UNLOAD BIT IN DMBFLAG_^1_%RTJ CLOSE_^1EXCX_!ENQ 1_^1_%JMP* (EXCL)_^1EXCI_!ADC INPM1_^1EXCO_!ADC OUTM1_^1EXPR_!ADC PRNM1_^1EXED_!ALF 10,16CE€ND TAPE UTILITY;_^1_%END_]_^__PPRINT CSY/ U10 P€1_%NAM PRINT_(DECK-ID U10 MAG TAPE UTILITY_$SUMMARY-106_^1*_$PROCESSES FORTRAN-LIKE FORMAT STATEMENTS FOR PRINT OUTPUT_^1*_$CYBER 18 / 1700 COMPUTER SYSTEMS_^1*_$SMALL SYSTEMS DIVISION, LA JOLLA, CALIFORNIA_^1*_$COPYRIGHT CONTROL DATA CORPORATION 1976_^1*_]_^1***_"PURPOSE_^1*_$-------_^1*_$PROCESSES FORTRAN-LIKE FORMAT STATEMENTS FOR PRINT OUTPUT_^1*_]_^1****_!*******************€€**********************************************_^1*_$ENTRY POINTS_^1****_!*****************************************************************_^1****_!*****************************************************************_^1*_$EXTERNALS_^1****_!*****************************************************************_^1****_!*****************************************************************_^1*_$EQU€€IVALENCES_^1****_!*****************************************************************_^1_%EQU LPMSK(2)_$LOGICAL PRODUCT MASK START_^1****_]_^1************************************************************_^1*_#TABLE OF FORMAT CHARACTERS USED BY PROCESSOR_(*_^1************************************************************_^1PRTLST NUM $0_+GARBAGE - IGNOR_^1_%NUM $25_*SET OR CLEAR INDIR€€ECT_^1_%NUM $26_*% SET OR CLEAR INDIRECT_^1_%NUM $28_*( LEFT PAREN INITIATE REPEAT PROCESS_^1_%NUM $29_*) RIGHT PAREN - END REPEAT PROCESS_^1_%NUM $2A_** END OF FORMAT CODE_^1_%NUM $2B_*+ SET FORWARD DATA LIST POINT_^1_%NUM $2D_*- SET BACK DATA LIST POINTER_^1_%NUM $2E_*. VARIABLE FORMAT PARAMETER_^1_%NUM $2F_*/ END OF LINE - UPSPCE ONE LINE_^1_%NUM $3B_*; EDN OF RECORD ; €€END OF FORMAT CODE_^1_%NUM $41_*A START ASCII INSERTION_^1_%NUM $43_*C START CHARACTER SUBSTITUTION_^1_%NUM $44_*D START DECIMAL CONVERSION 1 WORD_^1_%NUM $45_*E TOP OF FORM INDICATOR_^1_%NUM $48_*H START HEX TO ASCII CONVERSION_^1_%NUM $4B_*K INDEX INCREMENT_^1_%NUM $50_*P START BYTE DECIMAL CONVERSION_^1_%NUM $53_*S SKIP DATA PROCESSOR_^1_%NUM $58_*X INSERT BLANKS_^1_%SP€€C 4_^1************************************************************_^1*_"TABLE OF FORMAT FORTRAN PROCESSOR ROUTINES_+*_^1************************************************************_^1_%SPC 4_^1PRTTAB ADC PRT003_'ROUTINE TO SKIP GARBAGE FORMAT CHARACERS_^1_%ADC PRT220_'% SET OR CLEAR INDIRECT INDICATOR_^1_%ADC PRT220_'SET OR CLEAR INDIRECT INDICATOR_^1_%ADC PRT190_'( START REP€€EAT PROCESS_^1_%ADC PRT200_') END OF REPEATED CHARACTERS COUNT - 1_^1_%ADC PRT185_'* END OF FORMAT-EXIT_^1_%ADC PRT245_'+ SET FORWARD DATA LIST POINT_^1_%ADC PRT240_'- SET BACK DATA LIST POINTER N_^1_%ADC PRT230_'. VARIABLE FORMAT PARAMETER_^1_%ADC PRT160_'/ END OF LINE INDICATOR_^1_%ADC PRT180_'; END OF RECORD;END OF FORMAT_^1_%ADC PRT150_'A START ASCII INSERTION_^1_%ADC €€PRT130_'C START CHARACTER INSERTION_^1_%ADC PRT120_'D START ONE WORD DECIMAL CONVERSION_^1_%ADC PRT330_'E TOP OF FORM INDICATOR_^1_%ADC PRT110_'H START HEX TO ASCII CONVERSION_^1_%ADC PRT250_'K INDEX INCREMENT_^1_%ADC PRT140_'P START BYTE DECIMAL CONVERSION_^1_%ADC PRT105_'S SKIP N WORDS OF DATA_^1_%ADC PRT100_'X INSERT N BLANK CHARACTERS_^1_%SPC 4_^1_%ENT PRINT_^1********€€****************************************************_^1*_Y*_^1* PRINT - SUBROUTINE TO PROCESS FORTRAN LIKE FORMAT_%*_^1*_)STATEMENTS FOR PRINTING._6*_^1*_Y*_^1* CALLING SEQUENCE - RTJ PRINT_:*_^1*_4ADC FORMAT_:*_^1*_4ADC DATLST_:*_^1*_4ADC BUFFER_:*_^1*_4NUM BUFFLNG_9*_^1*_X*_^1* EXTERNAL SUBROUTINES USED- SBYTE, LBYTE_0*_^1*_Y*_^1************************************************€€************_^1_%SPC 4_^1_%EXT SBYTE,LBYTE,MOTION_^1_%EXT PUTLOC_^1_%EXT SYSERR_^1_%EXT MESAGE_^1WFILEM EQU WFILEM(3)_^1_%SPC 4_^1************************************_^1* EQUATES USED TO REFERENCE PRTDMB *_^1************************************_^1_%SPC 4_^1IOBFLG EQU IOBFLG(1)_^1IOBFL2 EQU IOBFL2(IOBFLG+1)_^1EOFADR EQU EOFADR(IOBFL2+1)_^1ERREXT EQU ERREXT(EOFADR+1)_^1LO€€G1_!EQU LOG1(ERREXT+1)_^1ABUFFP EQU ABUFFP(LOG1+1)_^1LBUFFP EQU LBUFFP(ABUFFP+1)_^1MAXBLK EQU MAXBLK(LBUFFP+1)_^1RECSIZ EQU RECSIZ(MAXBLK+1)_^1ABLK_!EQU ABLK(RECSIZ+1)_^1LBLK_!EQU LBLK(ABLK+1)_^1ARECL EQU ARECL(LBLK+1)_^1LRECL EQU LRECL(ARECL+1)_^1BLKCNT EQU BLKCNT(LRECL+1)_^1RECCNT EQU RECCNT(BLKCNT+1)_^1ALABEL EQU ALABEL(RECCNT+1)_^1FORD_!EQU FORD(ALABEL+1)_^1RECOR€€D EQU RECORD(FORD+1)_^1ACONV EQU ACONV(RECORD+1)_^1ASLCT1 EQU ASLCT1(ACONV+1)_^1ASLCT2 EQU ASLCT2(ASLCT1+1)_^1ASLCT3 EQU ASLCT3(ASLCT2+1)_^1_%SPC 4_^1_%SPC 4_^1PRINT NOP 0_,MAIN ENTRY TO PROCESSOR_^1_%LDA* (PRINT)_%GET FORMAT ADDRESS_^1_%ALS 1_,MULTIPLY BY TWO TO GET CHARACTER ADDRES_^1_%STA* FMTADR_'SAVE AS POINTER TO FORMAT STATEMENT_^1_%RAO* PRINT_(INCREMENT ADDRESS T€€O NEXT PARM_^1_%LDA* (PRINT)_%GET DATA LIST ADDRESS_^1_%ALS 1_,CONVERT TO CHARACTER ADDRESS_^1_%STA* (ADTLST)_$SAVE IT_^1_%LDA* ADTLST_^1_%STA DATPTR_^1_%RAO* PRINT_(INCREMENT ADDRESS TO NEXT PARM_^1_%LDA =N$AAAA_^1_%STA IFLG_^1_%LDQ* (PRINT)_^1_%LDA- IOBFLG,Q_^1_%SAM GOOD_^1_%JMP MESAGE_^1GOOD_!LDA- $FF_^1_%STA* STOREI_^1_%STQ- $FF_^1_%CLR A_^1_%STA EOLFLG_^1_%RTJ PRESET_€€^1_%SPC 6_^1PRT003 LDA* CHRCNT_'SAVE CHRCNT_^1_%STA OLDCNT_^1PRT005 CLR A_^1_%STA* TEMP05_^1PRT006 RTJ* GETFMT_'GET A FORMAT CHARACTER_^1_%STA* TCHAR_(SAVE THE CHARACTER_^1_%INA -$3A_)CHECK FOR DECIMAL NUMERIC_^1_%SAP PRT010_'NOT DECIMAL QUIT_^1_%INA $A_^1_%SAM PRT010_'NOT DECIMAL QUIT_^1_%STA* TCHAR_^1_%ENA $A_^1_%MUI* TEMP05_^1_%ADD* TCHAR_^1_%STA* TEMP05_^1_%JMP* PRT006_€€^1TEMP05 NUM $0_^1_%SPC 4_^1************************************************************_^1* CHECK TO SEE IF NEXT CHARACTER IS IN TABLE AND JMP TO_!*_^1* FORMAT CHARACTER PROCESSOR_=*_^1************************************************************_^1_%SPC 4_^1PRT010 LDA* TEMP05_^1_%SAZ 1_^1_%STA* CHRCNT_^1_%ENQ 19_^1PRT012 LDA* TCHAR_(SET CHARACTER IN A_^1_%SUB* PRTLST,Q_$COM€€PARE TO TABLE CHARACTER_^1_%SAZ PRT015_'IF ZERO COMPARISON IS EQUAL_^1_%SAM PRT014_'IF LESS THAN ZERO EXIT SEARCH_^1_%ENQ 1_,SET UP FOR GARBAGE H CHARACTER EXIT_^1PRT014 INQ -1_+DECREMT INDEX_^1_%SQZ PRT015_'CHECK FOR END OF LIST AND EXIT IF TRUE_^1_%JMP* PRT012_'CONTINUE SCAN OF LIST_^1_%SPC 4_^1*_!CALL PROCESSOR ROUTINE - ON COMPLETION REENTER AT PRT003*_^1PRT015 LDQ* PRTTA€€B,Q_$GET PROCESSOR ADDRESS_^1_%INQ -1_+SET UP FOR ABSOLUTE INDEXING_^1_%JMP- 1,Q_*GO TO PROCESSOR_^1TCHAR NUM 0_,HOLD AREA FOR CHARACTER_^1_%SPC 4_^1************************************************************_^1* GETFMT - RETIEVE THE NEXT FORMAT CHARACTER FROM THE_#*_^1*_*BUFFER OF THE FORMAT STRING._2*_^1************************************************************_^1_%SPC 4€€_^1GETFMT NOP 0_,ENTRY GETFMT_^1_%LDQ* FMTADR_'GET ADDRESS OF STRING_^1_%RTJ* (LBYTE1)_^1_%STQ* FMTADR_'SAVE Q ON RETURN AS NEXT FORMAT CHARACTE_^1_%JMP* (GETFMT)_$RETURN WITH (A) SET TO CHARACTER_^1_%SPC 4_^1FMTADR ADC $0_+CHARACTER ADDRESS OF FORMAT STRING_^1_%SPC 4_^1*******************************************_^1*_"SETCNT - SET UP A COUNTER TO USE THE *_^1*_,OVERFLOW INDICAT€€OR._(*_^1*******************************************_^1_%SPC 4_^1SETCNT NOP 0_^1_%LDA* CHRCNT_'GET CHARACTER COUNT AND CONVERT TO OVFL CNTR_^1_%RTJ SETCT2_'CALL EXTD SETCNT_^1_%EXT SETCT2_^1STCNT NUM 0_^1_%JMP* (SETCNT)_^1CHRCNT NUM 0_^1_%SPC 4_^1_%SPC 4_^1************************************************************_^1* PRT100 INSERT N BLANKS IN THE OUTPUT BUFFER. CHRCNT€€_"*_^1*_(CONTAINS THE NUMBER OF BLANKS TO INSERT._(*_^1************************************************************_^1_%SPC 4_^1PRT100 RTJ* SETCNT_'SET UP FOR COUNTING_^1PRT102 ENA $20_*BALNK IN A_^1_%RTJ* STBUFF_'STORE CHARACTER IN BUFFER_^1_%RAO* STCNT_(COUNT UP_^1_%SOV PRT104_'DONE - EXIT_^1_%JMP* PRT102_'KEEP STORING BLANKS_^1PRT104 JMP* PRT003_'EXIT TO FORMAT PROCESSOR_^1ST€€OREI NUM $0_^1_%SPC 4_^1*************************_^1* SKIP N WORDS OF DATA *_^1*************************_^1PRT105 RTJ* (PRT111+1)_"USE GETWRD TO FORCE PRINTER ALIGNMENT_^1_%LDA* CHRCNT_'GET NUMBER OF WORDS TO SKIP_^1_%INA 1_^1_%ALS 1_,MULTIPLY BY TWO_^1_%ADD* (ADTLST)_^1_%STA* (ADTLST)_$RESET DATA POINTER_^1_%JMP* PRT003_'EXIT_^1ADTLST ADC DTLSTC_^1_%SPC 4_^1****************€€********************************************_^1* H - CONVERT N WORDS OF HEX DATA TO ASCII PRINTER CHARS *_^1************************************************************_^1_%SPC 4_^1PRT110 RTJ* SETCNT_^1PRT111 RTJ* (XGETWD)_$GET A WORD OF DATA_^1_%STA* (ATEMP)_^1PRT112 CLR Q_^1_%LDA* (ATEMP)_%GET SAVED WORD_^1_%LLS 4_,CONVERT ONE HEX DIGIT NOW IN Q_^1_%STA* (ATEMP)_%STORE REMAI€€NING DIGITS_^1_%TRQ A_,PROCESS THE MOST SIGNIFICANT 4 BITS_^1_%INA -$A_^1_%SAM PRT114_^1_%INA $7_^1PRT114 INA $3A_^1_%RTJ* STBUFF_'STORE THE RESULT IN THE BUFFER_^1_%RAO* STCNT_(COUNT DOWN THE CHRCNT_^1_%SOV PRT115_'DONE SKIP AND EXIT_^1_%JMP* PRT112_'KEEP PROCESSING_^1PRT115 JMP* PRT003_'EXIT_^1ATEMP ADC TEMP0_^1_%SPC 4_^1*************************_^1*PROCESS DECIMAL WORD_€€!*_^1*************************_^1_%SPC 4_^1PRT120 RTJ* (XGETWD)_$GET A DATA WORD_^1PRT125 RTJ* HDECAC_'CONVERT TO DECIMAL_^1_%JMP* PRT003_'EXIT_^1XGETWD ADC GETWRD_^1_%SPC 4_^1*************************_^1*PROCESS A DECIMAL BYTE *_^1*************************_^1_%SPC 4_^1PRT140 RTJ+ GETCHR_'GET A DECIMAL BYTE OF DATA_^1_%JMP* PRT125_'USE COMMON CODE TO PROCESS DECIMAL DATA_^1_%SP€€C 4_^1*************************_^1* PROCESS CHARACTERS_"*_^1* FROM FORMAT STATEMENT *_^1*************************_^1_%SPC 4_^1PRT130 RTJ* SETCNT_'SET UP CHARACTER COUNT_^1PRT132 RTJ* GETFMT_'GET A CHARACTER FROM THE FORMAT BUFFER_^1_%RTJ* STBUFF_^1_%RAO* STCNT_^1_%SOV PRT133_'DONE THEN EXIT_^1_%JMP* PRT132_'KEEP PROCESSING CHARACTERS_^1PRT133 JMP* PRT003_'EXIG_^1_%SPC 4_^1*****€€********************_^1* PROCESS ASCII CHARACTERS*_^1* FORM DATA BUFFER._#*_^1_%SPC 4_^1PRT150 RTJ* SETCNT_^1PRT155 RTJ* GETCHR_^1_%TRA Q_,CHECK FOR PRINTABLE ASCII DATA_^1_%INQ -$20_)RANGE MUST BE $20 TO $5F_^1_%SQM PRT156_'UNPRINTABLE CHARACTER_^1_%INQ -$40_^1_%SQM PRT156+1_$PRINTABLE CHARACTER_^1PRT156 ENA $2E_*SUBSTITUTE A PERIOD FOR UNPRINTABLE CHARACTER_^1_%RTJ* STBUFF€€_'STORE ONE CHARACTER_^1_%RAO* STCNT_^1_%SOV PRT158_^1_%JMP* PRT155_^1PRT158 JMP* PRT003_^1LBYTE1 ADC LBYTE_(EXTERNAL SUBROUTINE_^1_%SPC 4_^1*************************_^1* PRINT ONE LINE_'*_^1*************************_^1_%SPC 4_^1PRT160 RTJ* EOL_^1_%JMP* PRT003_^1_%SPC 4_^1*************************_^1* EXIT ROUTINE *_'*_^1*************************_^1_%SPC 4_^1PRT180 RTJ* EOL_^€€1PRT185 RAO PRINT_(INCREMENT RETURN ADDRESS_^1_%LDA* STOREI_^1_%STA- $FF_^1_%JMP (PRINT)_%FORMAT PROCESS COMPLETE RETURN_^1_%SPC 4_^1*************************_^1* LEFT PAREN - SET REPEAT*_^1* COUNT AND SAVE PARMS *_^1*************************_^1_%SPC 4_^1N_$EQU N(5)_)NUMBER OF LEVELS OF NESTED PARENS_^1PRT190 LDA* CHRCNT_^1_%SAZ 1_^1_%JMP* PRT195_^1_%ENA -1_+INCREMENT LEFT €€PAREN; COUNTER_^1_%STA* CNTER_^1FMTSKP RTJ+ GETFMT_'START SKIPPING FORMAT CHARACTERS_^1_%INA -$29_)LOOK FOR RIGHT PAREN._^1_%SAN LEFT_^1_%RAO* CNTER_(FOUND MATE FOR A LEFT PAREN_^1_%LDQ* CNTER_^1_%SQZ 1_^1_%JMP* AGAIN_(IF NOT MATE FOR ORIGINAL LEFT PAREN._^1_%JMP* PRT158_'IF RIGHT PAREN. INDIRECT RETURN_^1LEFT_!INA $1_+CHECK FOR LEFT PAREN,_^1_%SAZ 1_^1_%JMP* AGAIN_(NOT A LEFT€€ PAREN._^1_%ENQ -1_+ONE MORE LEFT PAREN._^1_%ADQ* CNTER_^1_%STQ* CNTER_^1AGAIN JMP* FMTSKP_'GET NEXT FORMAT CHARACTER_^1PRT195 TCA A_^1_%RAO* LEVLNO_'ONE MORE LEVEL OF PARENS._^1_%LDQ* LEVLNO_^1_%STA* RPCNT,Q_%SAVE REPEAT COUNT_^1_%LDA* FMTADR_'SAVE REPEAT ADDRESS OF FORMAT_^1_%STA* RPADR,Q_^1_%JMP* PRT158_'INDIRECT RETURN_^1LEVLNO NUM -1_+HOLDS NO. OF PAIRS OF EMBEDDED PARENS_€€^1CNTER NUM $0_+COUNT OF UNPAIRED LEFT PARENS,_^1RPCNT BSS RPCNT(N)_$HOLDS REPETITION COUNTS_^1_%SPC 4_^1_%SPC 4_^1*******************************_^1* RIGHT PAREN - RESET FOR_#*_^1* REPEAT OF LAST NESTED SET_!*_^1*******************************_^1_%SPC 4_^1PRT200 LDQ* LEVLNO_^1_%RAO* RPCNT,Q_%INCREMENT REPEAT COUNT FOR THIS LEVEL OF N_^1_%LDA* RPCNT,Q_^1_%SAP PRT205_'REPEAT€€ PROCESS COMPLETE_^1_%LDA* RPADR,Q_%OTHERWISE GET OLD FORMAT ADDR. AND RESET F_^1_%STA* FMTADR_^1_%JMP* PRT158_'INDIRECT RETURN_^1PRT205 INQ -1_+PASS BACK THRU ONE LEVEL_^1_%STQ* LEVLNO_^1_%JMP* PRT158_'INDIRECT RETURN_^1_%BSS RPADR(5)_$HOLDS FORMAT ADDR. TO RESET_^1_%SPC 4_^1*******************************_^1* STBUFF - SUBROUTINE TO STORE*_^1*_)ONE CHARACTER IN THE*_^1*_)OUTPUT€€ BUFFER._#*_^1********************************_^1_%SPC 4_^1STBUFF NOP 0_,STORE BUFFER CHARACTER_^1_%RTJ* STBUFX_'STORE THE CHARACTER_^1_%CLR A_^1_%STA* EOLFLG_^1_%LDA- LRECL,I_^1_%SUB- RECSIZ,I_^1_%SAM NOFLOW_^1_%RTJ* PRINTR_^1_%RAO* EOLFLG_^1NOFLOW EQU NOFLOW(*)_^1_%JMP* (STBUFF)_^1ABUFF NUM $0_^1SBYTE1 ADC SBYTE_^1_%SPC 4_^1*******************************************_^1*€€ EOL - IF JUST PRINTED BUFFER BECAUSE OF*_^1*_'FULL BUFFER DONT PRINT IT AGAIN *_^1********************************************_^1_%SPC 2_^1EOL_"NOP $0_^1_%LDA* EOLFLG_^1_%SAN 1_^1_%RTJ* PRINTR_^1_%CLR A_^1_%STA* EOLFLG_^1_%JMP* (EOL)_^1EOLFLG NUM $0_^1_%SPC 4_^1**********************************_^1* HEX TO DECIMAL TO ASCII ROUTINE*_^1**********************************_^1_%€€SPC 4_^1HDECAC NOP 0_,CONVERT (A) TO PRINTABLE DECIMAL NUMBER_^1_%STA* TEMP0_^1_%LDA* ABUFF_^1_%ADD* (PCARCT)_^1_%STA* TEMP1_^1_%INA -1_+REDUCE BUFFER POINTER TO LAST CHARACTER POSITI_^1_%STA* ABUFF_(RESET BUFFER POINTER TO HANDLE EACH DIGIT_^1_%LDA- LRECL,I_^1_%ADD* (PCARCT)_^1_%STA* TEMP2_^1_%RTJ+ SETCNT_^1DEC10 CLR Q_^1_%LDA* TEMP0_^1_%DVI =N10_)CONVERT TO DECIMAL_^1_%STA*€€ TEMP0_(PROCESS REMAINDER_^1_%INQ $30_^1_%TRQ A_^1_%RTJ* STBUFF_'STORE LEAST SIGNIFICANT REMAINING DIGIT_^1_%RAO+ STCNT_^1_%SOV DEXT_^1_%LDA* ABUFF_^1_%INA -2_^1_%STA* ABUFF_^1_%JMP* DEC10_^1DEXT_!LDA* TEMP1_^1_%STA* ABUFF_^1_%LDA* TEMP2_^1_%STA- LRECL,I_^1_%JMP* (HDECAC)_$RETURN_^1TEMP0 NUM $0_^1TEMP1 NUM $0_^1TEMP2 NUM $0_^1_%SPC 4_^1*************************_^1* GET A€€ DATA CHARACTER *_^1*************************_^1_%SPC 4_^1GETCHR NOP 0_^1_%LDQ* DTLSTC_'ADDRESS OF DATA CHARACTER_^1_%RTJ* (LBYTE1)_^1_%STQ* DTLSTC_'UPDATE CHARACTER DATA POINTER_^1_%JMP* (GETCHR)_$RETURN_^1_%SPC 4_^1*************************_^1* RETREIVE NEXT FULL WORD*_^1**************************_^1_%SPC 4_^1GETWRD NOP 0_,ENTRY GET WORD_^1_%CLR Q_^1_%LDA* DTLSTC_^1_%LLS €€15_^1_%SAM GETWD5_'CHCK WHCIH HALF OF WORD_^1_%INQ -1_^1GETWD5 LDA- 1,Q_*GET DATA WORD_^1_%INQ 2_^1_%QLS 1_^1_%STQ* DTLSTC_'Q POINTS TO NEXT WORD_^1_%JMP* (GETWRD)_$RETURN_^1DTLSTC NUM $0_+POINTER TO DATA CHARACTER_^1_%SPC 4_^1**************************************_^1* SBUFX SOTRE CHARACTER_,*_^1**************************************_^1_%SPC 2_^1STBUFX NOP 0_^1_%LDQ* ABUFF€€_(GET NEXT STORE ADDRESS_^1_%RTJ* (SBYTE1)_$SO STORE IT_^1_%STQ* ABUFF_(UPDATE NEXT ADDRESS_^1_%RAO- LRECL,I_%UPDATE RECORC LENGTH_^1_%JMP* (STBUFX)_$RETURN_^1_%SPC 4_^1**********************************_^1* SET OR CLEAR INDIRECT FLAG_#*_^1**********************************_^1_%SPC 4_^1PRT220 LDA* IFLG_)IF IFLG = $AAAA NOT INDIRECT_^1_%ALS 1_,RESET TO NEXT VALUE_^1_%STA* IFLG_^1€€_%SAM PRT225_'IF RESULT = $AAAA CLEAR INDIRECT AND SK_^1_%RTJ* GETWRD_'GET INDIRECT POINTER IN A_^1_%STQ* DTSVE_(HOLD NEXT DIRECT REFERENCE_^1_%ALS 1_,CONVERT TO CHARACTER ADDRESS[_^1_%STA* DTLSTC_'AND RESET DTLSTC FOR INDEIRECT_^1_%LDA =XDTSVE_^1_%STA* DATPTR_'SET INDIRECT POINTER_^1_%JMP* (RET003)_$INDIRECT RETURN_^1_%SPC 2_^1PRT225 LDA* DTSVE_(RESET DIRECT POINTER_^1_%STA* D€€TLSTC_^1_%LDA =XDTLSTC_$SET INDIRECT POINTER_^1_%STA* DATPTR_^1_%JMP* (RET003)_$INDIRECT RETURN_^1DTSVE NUM $0_+HOLD AREA FOR DIRECT POINTER_^1IFLG_!NUM $AAAA_^1DATPTR ADC DTLSTC_'INDIRECT PTR. TO ORIGINAL DATA LIST_^1_%SPC 4_^1********************************_^1* ISSUE PAGE EJECT_,*_^1********************************_^1_%SPC 4_^1PRT330 RTJ* PAGEJT_'GIVE PAGE EJECT_^1_%RTJ* €€PRINTR_^1_%JMP* (RET003)_$RETURN_^1_%SPC 2_^1PAGEJT NOP 0_^1_%LDA- LBUFFP,I_$GET LINE COUNT_^1_%RTJ SETCT2_'CONVERT TO OVERFLOW COUNTER_^1_%NOP 0_,GARBAGE WORD_^1_%STA- ACONV,I_%RESET COUNTER_^1_%ENA $0C_*SCIP CHANNEL 1_^1_%RTJ* STBUFX_'USE SECONDARY STORE ROUTINE TO BYPASS COUNT CH_^1_%JMP* (PAGEJT)_^1PCARCT ADC CHRCNT_^1_%SPC 4_^1*******************************************€€*****************_^1* PRINTR - PRINT THE CONTENTS OF THE BUFFER SPECIFIED_$*_^1************************************************************_^1_%SPC 4_^1PRINTR NOP 0_,PRINT SUBROUTINE_^1_%RAO- ACONV,I_%CHECK FOR LINE OFLOW_^1_%SNO PRT309_'IF NO OFLOW SKIP_^1_%RTJ* PAGEJT_'SET UP FOR PAGE EJECT_^1PRT309 EQU PRT309(*)_^1_%LDA- LRECL,I_%CHECK FOR ZERO LENGTH BUFFER_^1_%SAN PRT305€€_'NOT ZERO_^1_%ENA $20_*PLACE ONE SPACE IN BUFFER_^1_%RTJ* STBUFX_'USE SEC. STORE ROUTINE TO IGNORE COUNT CHECK_^1PRT305 LDQ* ABUFF_(CHECK FOR ODD CHARACTER LENGTH_^1_%LRS 1_^1_%SAP PRT310_'NOT ODD LENGTH_^1_%JMP* PRT305-2_$GO TO STORE ROUTINE_^1PRT310 EQU PRT310(*)_^1_%LDQ- $FF_^1_%RTJ PUTLOC_^1_%RTJ* PRESET_^1_%JMP* (PRINTR)_$RETURN_^1_%SPC 4_^1*****************************€€*************_^1* PRESET - PRESET OR RESET BUFFER_%*_^1*_*POINTER AND LENGTH_**_^1******************************************_^1_%SPC 2_^1PRESET NOP $0_^1_%LDA- ABLK,I_^1_%ALS 1_^1_%STA* ABUFF_^1_%CLR A_^1_%STA- LRECL,I_^1_%JMP* (PRESET)_^1_%SPC 4_^1_%SPC 4_^1************************************_^1* USE GETWRD ON ORIGINAL DATA LIST *_^1************************************_^1_€€%SPC 4_^1PRT235 NOP_]_^1_%LDA* DTLSTC_'SAVE POINTER TO CURRENT DATA_^1_%STA* TSAVER_^1_%LDA* (DATPTR)_$GET POINTER TO ORIG. DATA LIST_^1_%STA* DTLSTC_'STORE FOR USE BY GETWRD_^1_%RTJ* GETWRD_'GET WORD FROM ORIG. DATA LIST_^1_%JMP* (PRT235)_$RETURN TO CALLING ROUTINE_^1TSAVER NUM $0_^1_%SPC 4_^1******************************_^1*VARIABLE FORMAT PARAMETER_!*_^1*********************€€*********_^1_%SPC 4_^1PRT230 RTJ* PRT235_'GET NEXT WORD FROM ORIG. DATA LIST_^1_%STA* (PCARCT)_$STORE IT IN CHRCNT_^1RETXXX LDA* TSAVER_'RESTORE POINTER TO CURRENT DATA_^1_%STA* DTLSTC_^1_%STQ* (DATPTR)_$POINT TO NEXT WORD IN ORIG. DATA LIST_^1_%JMP* (RET003)_$CONTINUE PROCESSING FORMAT CHARS._^1RET005 ADC PRT005_^1_%SPC 4_^1****************************************************_^€€1*MOVE PRIMARY DATA LIST POINTER_3*_^1****************************************************_^1_%SPC 4_^1PRT240 LDA* (PCARCT)_$WILL MOVE IT BACK_^1_%TCA A_^1_%STA* (PCARCT)_^1PRT245 RTJ* PRT235_'USE GETWRD TO FORCE WORD ALIGNMENT_^1_%ENA -1_^1_%ADD* (PCARCT)_^1_%ALS 1_^1_%AAQ Q_,GET NEW POINTER_^1_%LDA* OLDCNT_'RESTORE CHARACTER COUNT_^1_%STA* (PCARCT)_^1_%JMP* RETXXX_'RETURN_^1€€OLDCNT NUM $0_^1RET003 ADC PRT003_^1_%SPC 4_^1_%SPC 4_^1********************_^1*INDEX INCREMENT_!*_^1********************_^1_%SPC 4_^1PRT250 RTJ* PRT235_'GET NEXT WORD OF ORIG. DATA LIST_^1_%ADD* (PCARCT)_$ADD INCREMENT_^1_%QRS 1_,STORE BACK INCREMENTED ADDRESS_^1_%LLS 16_+SWITCH AQ_^1_%AND- LPMSK+15_$DROP ANY SIGN EXTENSION_^1_%LLS 16_+SWITCH AQ_^1_%INQ -2_^1_%STA- 1,Q_^1€F_%LDA* TSAVER_^1_%STA* DTLSTC_^1_%JMP* (RET003)_$RETURN_^1_%END_]_^__ FPVERIFY CSY/ U11 P€1_%NAM VERIFY_'DECK-ID U11 MAG TAPE UTILITY_$SUMMARY-106_^1*_$VERIFIES MAG. TAPE FILES_^1*_$CYBER 18 / 1700 COMPUTER SYSTEMS_^1*_$SMALL SYSTEMS DIVISION, LA JOLLA, CALIFORNIA_^1*_$COPYRIGHT CONTROL DATA CORPORATION 1976_^1*_]_^1***_"PURPOSE_^1*_$-------_^1*_]_^1*******************************************************_^1** THE VERIFY MODULE PERFORMS THE BASIC UTILITY_#**_^1** FUN€€CTION OF VERIFYING MAGNETIC TAPE FILES_'**_^1*******************************************************_^1****_!*****************************************************************_^1*_$ENTRY POINTS_^1****_!*****************************************************************_^1_%ENT VERIFY_^1****_!*****************************************************************_^1*_$EXTERNALS_^1****_!****€€*************************************************************_^1****_!*****************************************************************_^1*_$EQUIVALENCES_^1****_!*****************************************************************_^1****_]_^1_%EXT RCOUNT,FCOUNT,SCCB,FPARM,SETCNT,RMESS_^1_%EXT LBYTE,INPUT,OUTPUT,PRNDMB,MESAGE_^1_%EXT STNDMP,COUNT1,COUNT2,STATIS_^1_%EXT DUMP,HDFLAG_€€^1_%EXT WTOR_^1_%EXT FMTMSG_^1_%EXT SCCBM1_^1_%EXT TTYDM1_^1_%EXT LBYTE2_^1_%EXT DUIND_^1_%SPC 2_^1VERIFY NOP 0_,ENTRY POINT_^1_%LDA* (VERI)_'IS INIUT DMB OPEN_^1_%AND* (VERO)_'CHECK ALL DMBS FOR OPEN_^1_%SAM VERF2_(YES CONTINUE ALL DMBS OK_^1VERE1 JMP* (IMESG)_^1VERF2 EQU VERF2(*)_^1_%LDA* PNM1_^1_%STA* (XXDM1)_%SET UP FOR PRINTER_^1_%STA* (XXDM2)_^1_%STA* (XXDM3)_^1_%€€LDA* (VERP)_'CHECK IF PRINTER OPEN_^1_%SAM PROPN_^1_%LDA* TYDM1_(USE TTY_^1_%STA* (XXDM1)_^1_%STA* (XXDM2)_^1_%STA* (XXDM3)_^1PROPN EQU PROPN(*)_^1_%RTJ STNDMP_^1_%ENA 8_,CHECK IF SELECTION REQUIRED_^1_%AND* (VERI)_'USE INPUT FLAG_^1_%SAZ VERNSL_'IF NO SKIP THE FOLLOWING_^1_%ENA -8_+CLEAR AND SET VERIFY SELECTION FLAG_^1_%AND* (VERO)_^1_%INA 8_^1_%STA* (VERO)_'FLAG NOW SET_€€^1VERNSL EQU VERNSL(*)_^1_%CLR A_^1_%STA* RECER_(CLEAR RECORDS IN ERROR_^1_%STA* TOCHER_'CLEAR TOTAL CHARACTERS IN ERROR_^1_%ENQ 2_^1_%LDA =XINPEOF_^1_%STA* (VERI),Q_$STORE INPT END OF FILE ADDRESS_^1_%LDA =XOUTEOF_^1_%STA* (VERO),Q_$STORE OUTPUT END OF FILE ADDRESS_^1_%JMP* VERF3A_^1VERF3 EQU VERF3(*)_^1_%RTJ COUNT1_^1_%SAN 1_^1_%JMP* VERF14_^1VERF3A EQU VERF3A(*)_^1_%CL€€R A_^1_%STA* VPOS_)TOTAL CHARS IN RECORD_^1_%STA* CHARER_'SET CHAR MATCH ERROR = 0_^1_%STA* FRSTAD_'SET FIRST CHAR ERROR ADDRS = 0_^1_%LDQ* VERI_)Q = INPUT DMB-1_^1_%INQ -1_^1VERF4 RTJ+ GETLOC_'READ A RECORD FROM THE INPUT TAPE_^1OUTEOF LDQ* VERO_^1_%INQ -1_^1_%RTJ* (VERF4+1)_#READ A RECORD FROM THE OUTPUT TAPE_^1_%RTJ* LENGTH_'CHECK FOR MISMATCH IN RECORD LENGTH_^1_%LDA* VLREC€€L_'A = LRECL FOR CHK ON RECD COMPLETE_^1_%RTJ SETCNT_^1VPOS_!NUM 0_,OVERFLOW CNTR._^1VERF5 ENQ 11_^1_%LDA* (VERI),Q_$STORE ADDRS OF CURRENT LOGICAL INPUT_^1_%ALS 1_,RECORD IN CHAR MODE IN THE LBYTE2_^1_%STA* LBYT2A_'CALLING SEQUENCE._^1_%STA* FRSTAD_^1_%LDA* (VERO),Q_$DO SAME FOR OUTPUT TAPE_^1_%ALS 1_^1_%STA* LBYT2B_^1VERF6 RTJ* (LB2)_(GET A CHAR FROM INPUT BUFFER_^1LBYT2A€€ NUM 0_,CHAR ADDRS._^1_%STA* DIGIT_(SAVE RETURNED CHAR._^1_%RTJ* (LB2)_(GET A CHA R FROM VERIFY BUFFER_^1LBYT2B NUM 0_,CHAR ADDRS._^1_%EOR* DIGIT_(DO CHARS MATCH_^1_%SAZ VERF8_(YES-SKIP_^1_%LDA* CHARER_'NO MATCH-IS THIS FIRST ERROR_^1_%SAN VERF7_(IN RECORD-NO-SKIP_^1_%LDA* LBYT2A_^1_%SUB* FRSTAD_^1_%INA -1_^1_%STA* FRSTAD_^1_%RAO* RECER_(INCREMENT RECORD IN ERROR CNTR._^1VERF7€€ RAO* CHARER_'INCREMENT CHARS IN ERROR_^1VERF8 RAO* VPOS_)DONE WITH RECORD_^1_%SOV VDON_)DONE-SKIP_^1_%JMP* VERF6_(GO GET ANOTHER CHAR_^1VDON_!LDA* CHARER_'ERR IN THIS RECORD_^1_%SAN VERF8A_^1_%JMP* VERF3_^1VERF8A EQU VERF8A(*)_^1_%ENT VPOS_^1_%LDA* IHDFLG_'IS DUMP MODULE PROVIDED_^1_%INA 1_^1_%SNO PR1_*IT IS_^1_%CLR Q_^1_%RTJ* HEADNG_^1_%LDQ* VERI_)IT IS NOT_^1_%INQ -1_^€€1_%RTJ* VNF_*PRINT INPUT RECORD_^1_%ENQ 1_^1_%RTJ* HEADNG_^1_%LDQ* VERO_)PRINT OUTPUT RECORD_^1_%INQ -1_^1_%RTJ* VNF_^1_%JMP* VERF8B_'CONTINUE_^1PR1_"EQU PR1(*)_^1_%CLR Q_^1_%RTJ* HEADNG_'PRINT HEADINGZ_^1_%LDQ* VERI_^1_%INQ -1_^1_%STQ* (IHDFLG)_^1_%RTJ* (IDUMP)_^1_%ENQ 1_^1_%STQ* (IHDFLG)_^1_%RTJ* HEADNG_^1_%LDQ* VERO_^1_%INQ -1_^1_%RTJ* (IDUMP)_^1VERF8B EQU VERF8B(*)_^1_%€€LDA* TOCHER_'TOTAL NO. CHARS IN ERROR_^1_%ADD* CHARER_^1_%STA* TOCHER_^1VERF9 LDA* RECER_(10 RECORDS IN ERROR_^1_%INA -10_^1_%SAN VERF12_'NO-CONTINUE_^1PR2_"RTJ WTOR_^1_%ADC MSGX_^1_%SAP VERF12_'CONTINUE PROCESSING_^1_%JMP* VERF14_'EXIT_^1VERF12 EQU VERF12(*)_^1_%JMP* VERF3_^1VERF14 EQU VERF14(*)_^1_%RTJ* EOF_^1_%RTJ STATIS_^1RETURN JMP* (VERIFY)_$EXIT_^1_%SPC 2_^1VERI_!A€€DC INPUT_^1VERO_!ADC OUTPUT_^1VERP_!ADC PRNDMB_^1IMESG ADC MESAGE_^1TYDM1 ADC TTYDM1_^1PNM1_!ADC PRNM1_^1XXDM1 ADC XDM1_^1XXDM2 ADC XDM2_^1LB2_"ADC LBYTE2_^1XXDM3 ADC XDM3_^1IDUMP ADC DUMP_^1IPRINT ADC PRINT_^1IHDFLG ADC HDFLAG_^1_%SPC 2_^1INPEOF EQU INPEOF(*)_^1_%RTJ COUNT2_^1_%SAN 1_^1_%JMP* VERF14_^1_%JMP* VERF3_^1VLRECL NUM 0_^1***********THE FOLLOWING I€€S USED AS A DATA LIST BE WARE***********_^1TOCHER NUM $0_^1RECER NUM $0_^1FRSTAD NUM 0_^1CHARER NUM $0_^1_%EXT GETLOC,PRINT,PRNM1_^1DIGIT NUM 0_,CHAR HOLD_^1***************************************************_^1LENGTH NOP 0_,ENTRY_^1_%ENQ 12_+GET LENGTH OF RECORD_^1_%LDA* (VERI),Q_$FROM INPUT DMB (LRECL) AND SAVE_^1_%STA* VLRECL_^1_%LDA* (VERO),Q_$COMPARE WITH LENGTH OF_^€€1_%SUB* VLRECL_'RECORD IN OUTPUT DMB (LRECL)_^1_%SAZ LENG1_^1_%RTJ* (IPRINT)_^1_%ADC FORLEN_^1SAVXX NUM $0_^1XDM1_!ADC $0_^1LENG1 EQU LENG1(*)_^1_%JMP* (LENGTH)_^1************************************************************_^1VNF_"NOP $0_^1_%LDA- ARECL,Q_%GET RECORD ADDR._^1_%STA* DATA1_^1_%LDA- LRECL,Q_%GET RECORD LENGTH_^1_%STA* DATA2_^1_%RTJ* (IPRINT)_^1_%ADC FORXXX_^1_€€%ADC DATA1_^1XDM3_!ADC $0_^1_%JMP* (VNF)_^1DATA1 ADC $0_^1DATA2 NUM $0_^1FORXXX ALF 2,%.A;_^1ARECL EQU ARECL(12)_^1LRECL EQU LRECL(13)_^1_%SPC 4_^1********************************_^1* PRINT TOTAL NUMBER CHARS. AND*_^1* RECORDS IN ERROR_,*_^1********************************_^1_%SPC 4_^1EOF_"NOP_]_^1_%RTJ* (IPRINT)_^1_%ADC FOREOF_^1_%ADC TOCHER_^1XDM2_!ADC $0_^1_%JMP*€€ (EOF)_^1FOREOF ALF 25,//18CTOTAL CHAR ERRORS 5D5X5D17C RECORDS IN ERROR;_^1_%SPC 4_^1**************************************_^1* PRINT HEADINGS FOR RECORD DUMP_#*_^1**************************************_^1HEADNG NOP $0_^1_%LDA* FORLIS,Q_^1_%STA* FORSMT_^1_%RTJ* (IPRINT)_^1FORSMT ADC $0_^1_%ADC FRSTAD_^1_%ADC PRNM1_^1_%JMP* (HEADNG)_^1FORLIS ADC FORHDG_^1_%ADC FOR2_^1FORHDG€Φ ALF 23,/60(1C*)//25C*VER ERR: FIRST ERR CHAR 5D,5X5D1_^1_%ALF 13,0C CHAR ERRS/9CINPUT REC;_^1FOR2_!ALF 8,/10CVERIFY REC;_^1MSGX_!ALF 13,9C10 ERRORS/10C*CONTINUE:;_^1FORLEN ALF 8,12CLENGTH ERROR;_^1_%END_]_^__ΦPSELECT CSY/ U12 P€1_%NAM SELECT_'DECK-ID U12 MAG TAPE UTILITY_$SUMMARY-106_^1*_$SELECTS SPECIFIC RECORDS FROM A FILE_^1*_$CYBER 18 / 1700 COMPUTER SYSTEMS_^1*_$SMALL SYSTEMS DIVISION, LA JOLLA, CALIFORNIA_^1*_$COPYRIGHT CONTROL DATA CORPORATION 1976_^1*_]_^1***_"PURPOSE_^1*_$-------_^1*_]_^1*************************************_^1*_C*_^1* SELECT - MAIN SELECTION ROUTINE *_^1*_!CALL - (I) = DMB€€-1_+*_^1*_+RTJ SELECT_,*_^1*_!ON RETURN - (A)= ZERO(FALSE)_"*_^1*_+OR (A)= $FFFF(TRUE)_"*_^1*_C*_^1*************************************_^1****_!*****************************************************************_^1*_$ENTRY POINTS_^1****_!*****************************************************************_^1_%ENT SELECT_^1_%ENT SSEL,TSEL_^1_%ENT PNAM,TNAM,SNAM,ONAM_^1****_!*********€€********************************************************_^1*_$EXTERNALS_^1****_!*****************************************************************_^1_%EXT LBYTE,SETCNT_^1_%EXT MOVE,SBYTE,OPN27_^1_%ENT ETAB,EFTB,ELTB_^1_%EXT LBYTE2_^1****_!*****************************************************************_^1*_$EQUIVALENCES_^1****_!**************************************************€€***************_^1****_]_^1************************************_^1* EQUATES USED TO REFERENCE_"DMB *_^1************************************_^1IOBFLG EQU IOBFLG(1)_^1IOBFL2 EQU IOBFL2(IOBFLG+1)_^1EOFADR EQU EOFADR(IOBFL2+1)_^1ERREXT EQU ERREXT(EOFADR+1)_^1LOG1_!EQU LOG1(ERREXT+1)_^1ABUFFP EQU ABUFFP(LOG1+1)_^1LBUFFP EQU LBUFFP(ABUFFP+1)_^1MAXBLK EQU MAXBLK(LBUFFP+1)_^1RECSIZ€€ EQU RECSIZ(MAXBLK+1)_^1ABLK_!EQU ABLK(RECSIZ+1)_^1LBLK_!EQU LBLK(ABLK+1)_^1ARECL EQU ARECL(LBLK+1)_^1LRECL EQU LRECL(ARECL+1)_^1BLKCNT EQU BLKCNT(LRECL+1)_^1RECCNT EQU RECCNT(BLKCNT+1)_^1ALABEL EQU ALABEL(RECCNT+1)_^1FORD_!EQU FORD(ALABEL+1)_^1RECORD EQU RECORD(FORD+1)_^1ACONV EQU ACONV(RECORD+1)_^1ASLCT1 EQU ASLCT1(ACONV+1)_^1ASLCT2 EQU ASLCT2(ASLCT1+1)_^1ASLCT3 E€€QU ASLCT3(ASLCT2+1)_^1_%SPC 4_^1SELECT NOP_]_^1_%SET A_,SET RETURN CODE = TRUE_^1_%LDQ- ASLCT1,I_$ADDRESS OF FIRST SELECTION INDICATOR_^1_%SQM NEXT1_(OPTION HAS NOT BEEN SELECTED_^1_%SQZ NEXT1_(DITTO_^1_%RTJ* TLPR_)CALL TEST LIST PROCESSOR_^1_%SAP OVER1_(RETURN CODE = FLASE_^1_%LDQ- ASLCT1,I_$MARK IT NEGATIVE_^1_%TCQ Q_^1_%STQ- ASLCT1,I_^1OVER1 JMP* (SELECT)_$RETURN_^1NEXT1€€ LDQ- ASLCT2,I_$ADDRESS OF SECOND SELECTION INDICATOR_^1_%SQM NEXT2X_'OPTION HAS NOT BEEN SELECTED_^1_%SQZ NEXT2X_'DITTO_^1_%RTJ* TLPR_)CALL TEST LIST PROCESSOR_^1_%SAM THREE_(TERMINATE SELECTION_^1_%SET A_,SET RETURN CODE = TRUE_^1NEXT2X JMP* NEXT2_^1THREE LDQ- ASLCT1,I_$ADDR. OF FIRST SELECT INDICATOR_^1_%TCQ Q_,COMPLEMENT IT_^1_%STQ- ASLCT1,I_^1_%CLR A_,SET RETURN CODE =€€ FALSE_^1_%LDQ- EOFADR,I_$GO TO USER EOF ADDR._^1_%INQ -1_^1_%JMP- 1,Q_^1NEXT2 LDQ- ASLCT3,I_$ADDR. OF THIRD SELECTION INDICATOR_^1_%SQM RETN_)OPTION NOT SELECTED_^1_%SQZ RETN_)DITTO_^1_%RTJ* TLPR_)CALL TEST LIST PROCESSOR_^1RETN_!JMP* (SELECT)_$RETURN_^1_%SPC 4_^1ITAB_!ADC ITTAB_^1ETAB_!ADC $0_^1_%SPC 4_^1***************************************_^1* TLPR - TEST LIST PROCES€€SOR_(*_^1*_"CALL - (Q) ADDR. OF TEST LIST_!*_^1*_+RTJ TLPR_0*_^1*_$ON RETURN = (A) = TRUTH VALUE *_^1***************************************_^1_%SPC 4_^1TINDX NUM $0_^1TLPR_!NOP $0_^1_%SET A_,SET TRUTH VALUE = TRUE_^1_%STA* TVAL_^1_%ENA 1_^1_%STA* LOGOP_(SET LOGICAL OPERATOR = AND_^1_%QLS 1_^1NXTIND RTJ LBYTE_(GET TEST TABLE INDEX FROM TEST BLOCK_^1_%STQ* TINDX_(SAVE INDE€€X TO TEST BLOCK_^1_%TRA Q_,DETERMINE TO USE EITHER_^1_%RTJ* FIND_)DETERMINE IF INT OR EXT TABLE_^1_%SAM INTERN_'INTERNAL_^1_%LDQ* (ETAB),Q_$GET PTR. TO TEST TABLE_^1_%JMP* GOTIT_^1INTERN LDQ* (ITAB),Q_$GET PTR, TO INTERNAL TES TABLE_^1GOTIT EQU GOTIT(*)_^1_%LDA* TVAL_^1_%SQM TLPDON_'INDEX NO GOOD_^1_%SQZ TLPDON_'DITTO_^1_%RTJ* TEVAL_(CALL TEST EVALUATOR_^1_%RTJ* (XLEXP)_%CALL€€ LOGICAL EXPRESSION EVALUATOR_^1LOGOP NUM $0_^1TVAL_!NUM $0_^1_%LDQ* TINDX_^1_%RTJ* (NXTIND+1)_"CALL LBYTE - GET NEXT LOG. OP._^1_%STQ* TINDX_(SAVE INDEX TO TEST BLOCK_^1_%STA* LOGOP_(SAVE LOGICAL OPERATOR_^1_%LDQ* TVAL_^1_%INA -3_+SEE IF LOG OP IS NOT OR END_^1_%SAM NOTDON_^1_%SAN NOTEND_^1_%TCQ Q_^1NOTEND TRQ A_^1TLPDON JMP* (TLPR)_^1NOTDON LDQ* TINDX_^1_%JMP* NXTIND_^1XL€€EXP ADC LEXP_^1_%SPC 4_^1*******************************************_^1*_H*_^1* TEVAL - EVALUATES EACH TEST_+*_^1*_#CALL - (Q) = POINTER TO TEST TABLE *_^1*_+RTJ TEVAL_3*_^1*_%ON RETURN - (A) = TRUTH VALUE_#*_^1*_H*_^1*******************************************_^1_%SPC 4_^1TEMPO NUM $0_^1SAVEQ NUM $0_^1TEVAL NOP_]_^1_%STQ* SAVEQ_(SAVE INDEX TO TEST TABLE_^1_%SET A_,SET €€TRUTH VALUE = TRUE_^1_%STA* TVALA_^1_%ENA 1_,SET LOGICAL OPERATOR = AND_^1_%STA* LOP_^1AGAIN LDQ* SAVEQ_(GET LENGTH AND LOCATION OF THE_^1_%RTJ* FNDOP_(FIELDS OR LITERALS_^1_%RTJ* CLC_*CALL FIELD COMPARISON ROUTINE_^1LENA_!NUM $0_^1LOCA_!NUM $0_^1_%RTJ* SETPTR_'INCREMENT INDEX TO TEST TABLE AND GET REL OP_^1_%QRS 8_,GET REL. EXP_^1_%JMP* TABLE,Q_%TO GET TRUTH VALUE_^1TRUSET RT€€J LEXP_)GET NEW TRUTH VALUE_^1LOP_"NUM $0_^1TVALA NUM $0_^1_%LDA* TEMPO_(GET NEW LOG. OP._^1_%AND =N$7_^1_%STA* LOP_^1_%INA -4_+IS LOP = END_^1_%SAZ FINISH_'YES, DONE_^1_%JMP* AGAIN_(EVALUATE NEXT TEST_^1FINISH LDA* TVALA_(GET FINAL TRUTH VALUE_^1_%JMP* (TEVAL)_%RETURN_^1TABLE EQU TABLE(*)_$TABLE OF RELATIONS_^1_%SAP FALSE_(LT_^1_%SAM TRUE_)LE_^1_%SAN FALSE_(EQ_^1_%SAP €€ TRUE_)GE_^1_%SAM FALSE_(GT_^1_%SAZ FALSE_(NE_^1TRUE_!EQU TRUE(*)_^1_%SET A_^1_%JMP* TRUSET_^1FALSE EQU FALSE(*)_^1_%CLR A_^1_%JMP* TRUSET_^1_%SPC 3_^1********************************************_^1*_!INCREEMENT POINTERS TO TEST TABLE AND *_^1*_!LOAD Q WITH RELATIONAL OEPERATOR AND_!*_^1*_!LOGICAL OPERATOR. SEE BELOW FOR_%*_^1*_!REASON THIS IS A SUBROUTINE_+*_^1**********€€**********************************_^1_%SPC 3_^1SETPTR NOP 0_^1_%RAO* SAVEQ_(INCREMENT PINTER_^1_%LDQ* (SAVEQ)_%GET RELATIONAL OP AND LOP_^1_%RAO* SAVEQ_(INCREMENT AROUND OPERATORS_^1_%STQ* TEMPO_(SAVE IT_^1_%JMP* (SETPTR)_^1_%SPC 3_^1_%SPC 4_^1*******************************************_^1*_H*_^1* FNDOP - FINDS LOCATION AND LENGTH OF A *_^1*_(FIELD OR LITERAL._.*_^1*_!CALL - (€€Q) = POINTER TO FIELD OR_$*_^1*_/LITERAL INDEX._**_^1*_)RTJ FNDOP_5*_^1*_H*_^1*_"ON RETUTN - (Q) = CHARACTER ADDRESS *_^1*_5OF DATA_+*_^1*_/(A) = LENGTH OF DATA OR *_^1*_5NEGATIVE_**_^1*_H*_^1*******************************************_^1_%SPC 4_^1NIFTB EQU NIFTB(25)_^1NEFTB EQU NEFTB(50)_^1NILTB EQU NILTB(75)_^1NELTB EQU NELTB(100)_^1MNIFTB EQU MNIFTB(-25)_^1MNILTB EQU€€ MNILTB(-75)_^1EFTB_!ADC $0_^1ELTB_!ADC $0_^1IFTB_!ADC ITFTB_^1ILTB_!ADC ITLTB_^1LEN_"NUM $0_^1LOC_"NUM $0_^1LINDEX NUM $0_^1FNDOP NOP $0_^1_%INQ -1_^1_%LDA- 1,Q_*GET BOTH INDEXES_^1_%CLR Q_^1_%LLS 8_^1FINTOP EQU FINTOP(*)_^1_%STA* LINDEX_'SAVE SECOND INDEX_^1_%RTJ* FIND_)GET TABLE AND RELATIVE INDEX_^1_%SQP 1_^1_%JMP* LIT_^1_%QLS 1_,TWO ENTRIES PER INDEX VALUE_^1_%€€SAM INTFLD_^1_%ADQ* EFTB_^1_%JMP* OVERIT_^1INTFLD ADQ* IFTB_^1OVERIT EQU OVERIT(*)_^1_%INQ -1_^1_%LDA- 1,Q_*GET LENGTH_^1_%LDQ- 2,Q_*GET PSITION_^1_%STA* LEN_^1_%AAQ A_,SUM POS AND LEN_^1_%SUB- LRECL,I_%SUB RECORD LENGTH_^1_%INA -1_^1_%SAM GOOD_^1_%RTJ* SETPTR_'ABNORMAL EXIT SO INCREMNT TEST AND_^1*_4TAKE FUNNY EXIT BEWARE!!!!!!!!_^1_%JMP* FALSE_(FIELD TOO LONG_^1GOOD_!EQU G€€OOD(*)_^1_%LDA- ARECL,I_%GET FIELD ADDRESS_^1_%ALS 1_^1_%AAQ Q_^1CKIFDN LDA* LINDEX_^1_%SAZ FINDON_'BOTH INDEXES USED_^1_%STQ* LOCA_)SET UP CALL TO LEXP_^1_%LDQ* LEN_^1_%STQ* LENA_)DITTO_^1_%CLR Q_^1_%LLS 8_,GET NEXT INDEX_^1_%JMP* FINTOP_'PROCESS NEXT INDEX_^1FINDON LDA* LEN_^1_%JMP* (FNDOP)_%RETURN_^1LIT_"TCQ Q_^1_%SAM INTLIT_'INTERNAL LITERAL_^1_%LDQ* (ELTB),Q_$GET LOC. O€€F EXTERNAL LITERAL_^1_%JMP* GOTLOC_^1INTLIT LDQ* (ILTB),Q_$GET LOC. OF INTERNAL LITERAL_^1GOTLOC EQU GOTLOC(*)_^1_%INQ -1_^1_%LDA- 1,Q_*GET LENGTH_^1_%INQ 2_^1_%QLS 1_^1_%STA* LEN_*STORE LENGTH_^1_%JMP* CKIFDN_^1_%SPC 4_^1****************************************_^1*_F*_^1* FIND - INTERPRETS INDEX CODE_%*_^1*_"CALL - (Q) = INDEX_/*_^1*_$RTJ FIND_6*_^1*_!ON RETURN - (A) = - IF€€ INTERNAL_"*_^1*_4+ IF EXTERNAL_"*_^1*_.(Q) = RELATIVE INDEX_!*_^1*_2= - IF LITERAL_#*_^1*_2= + IF FIELD_%*_^1*_E*_^1****************************************_^1_%SPC 4_^1FIND_!NOP_]_^1_%CLR A_^1_%INQ MNILTB_^1_%SQP EXTLIT_^1_%INQ NIFTB_^1_%SQP INTLT_^1_%INQ NIFTB_^1_%SQP EXTFL_^1_%INQ NIFTB_^1_%TCQ Q_^1INTLT SET A_^1EXTLIT TCQ Q_^1EXTFL JMP* (FIND)_^1_%SPC 4_^1******€€****************************************_^1*_K*_^1* CLC - COMPARES TWO FIELDS_0*_^1*_"CALL - (Q) = PTR. TO B FIELD(CHAR.)_#*_^1*_*(A) = LENGTH OF B FIELD_)*_^1*_*RTJ CLC_9*_^1*_$P+1 LENGTH OF A FIELD_/*_^1*_$P+2 POINTER TO A FIELD(CHAR.)_)*_^1* ON RETURN - (A) = RESULT OF COMPARISON_"*_^1*_1= + A B_2*_^1*_1= O A=B_2*_^1*_1= - A B_2*_^1*_$(Q) = RELATIVE POSITION OF_"*_^1*_,LAST €€CHARS. COMPARED_"*_^1*_K*_^1**********************************************_^1_%SPC 4_^1BCHAR NUM $0_^1POSCNT NUM $0_^1CLC_"NOP $0_^1_%SUB* (CLC)_(BLEN - ALEN_^1_%STQ* BADR_)SAVE POINTER TO B FIELD_^1_%SAM USEB_^1_%CLR A_^1USEB_!ADD* (CLC)_^1_%RAO* CLC_^1_%STA* POSCNT_'CLEAR IF ZERO LENGTH_^1_%SAN 1_^1_%JMP* CLCDON_'ONE OF FIELDS ZERO LENGTH_^1_%RTJ SETCNT_^1LENGTH NUM $0_€€^1_%LDQ* (CLC)_(GET POINTER TO A FIELD_^1_%STQ* AADR_^1_%CLR A_^1_%STA* POSCNT_'POSITION OF CURRENT CHARACTERS_^1NXTCHR RTJ* (XLBYTE)_^1BADR_!ADC $0_^1_%STA* BCHAR_(SAVE B FIELD CHAR._^1_%RTJ* (XLBYTE)_$GET A FIELD CHAR._^1AADR_!ADC $0_^1_%SUB* BCHAR_(COMPARE CHARS._^1_%SAN CLCDON_'CHARS. NOT SAME_^1_%RAO* LENGTH_^1_%SOV CLCDON_'FIELD EXHAUSTED_^1_%RAO* POSCNT_'CHAR. POS. FROM€€ START OF FIELD_^1_%JMP* NXTCHR_^1CLCDON EQU CLCDON(*)_^1_%RAO* CLC_*INCREMENT RETURN ADDR;_^1_%LDQ* POSCNT_'GET POS. OF LAST COMPARISON_^1_%JMP* (CLC)_^1XLBYTE ADC LBYTE2_^1_%SPC 4_^1****************************************_^1*_F*_^1* LEXP - EVALUATE LOGICAL EXPRESSION *_^1*_!CALL - (A) = CURRENT TRUTH VALUE *_^1*_+RTJ LEXP_1*_^1*_%P+1 LOGICAL OPERATOR INDEX_!*_^1*_%P+2 L€€AST TRUTH VALUE - RESULT *_^1*_E*_^1****************************************_^1_%SPC 4_^1_%ENT LEXP_^1LEXP_!NOP $0_+MAIN ENTRY_^1_%LDQ* (LEXP)_'OPTAIN OPERATOR CODE_^1_%QLS 1_,DOUBLE IT FOR USE AS INDEX_^1_%RAO* LEXP_)POINT TO RESULT VALUE_^1_%JMP* LEVAL,Q_%BRANCH TO OPERATOR CODE_^1LEVAL EQU LEVAL(*)_^1_%EOR* (LEXP)_'CODE = 0_!EOR_^1_%JMP* LEXIT_^1_%AND* (LEXP)_'CODE = 1_!AN€€D_^1_%JMP* LEXIT_^1_%EOR* (LEXP)_'CODE = 2 OR_^1_%SAZ LEXIT+1_^1LEXIT EQU LEXIT(*)_^1_%STA* (LEXP)_'STORE RESULTING TRUTH VALUE_^1_%RAO* LEXP_^1_%JMP* (LEXP)_^1_%SPC 4_^1************************************_^1* FOLLOWING ARE THE BASIC TABLES_!*_^1************************************_^1_%SPC 4_^1*SSELECT AND TSELECT TABLES*_^1_%SPC 2_^1SSEL_!NUM $0001,$0104_!TEST0 AND TEST1 €€END_^1TSEL_!NUM $0001,$0204_!TEST 0 AND TEST 2 END_^1_%SPC 2_^1*INTERNAL TEST BLOCK*_^1_%SPC 2_^1ITTAB ADC T0_+TEST0_^1_%ADC T1_+TEST1_^1_%ADC T2_+TEST 2_^1_%SPC 2_^1*INTERNAL TEST DEFINITION TABLES*_^1_%SPC 2_^1*TEST 0 - F0 EQ L0,ORF1 EQ L0,OR,F2 EQ L0,F3 EQ L1*_^1T0_#NUM $0032_(FLD 0,LIT 0_^1_%NUM $0202_(EQ,OR_^1_%NUM $0132_(FLD 1,LIT 0_^1_%NUM $0202_(EQ,OR_^1_%NUM €€$0232_(FLD 2,LIT 0_^1_%NUM $0202_(EQ,OR_^1_%NUM $0333_(FLD 3,LIT 1_^1_%NUM $0204_(EQ,END_^1*TEST 1 - F4 EQ L2,OR,F5 EQ L2,OR,F6 EQ L2,OR,F7 EQ L2*_^1T1_#NUM $0434_(FLD 4,LIT 2_^1_%NUM $0202_(EQ,OR_^1_%NUM $0534_(FLD 5,LIT 2_^1_%NUM $0202_(EQ,OR_^1_%NUM $0634_(FLD 6,LIT 2_^1_%NUM $0202_(EQ,OR_^1_%NUM $0734_(FLD 7,LIT 2_^1_%NUM $0204_(EQ,OR_^1*TEST 2 - F4 EQ L3,OR,F5 EQ L3€€,OR,F6 EQ L3,OR,F7 EQ L3*_^1T2_#NUM $0435_(FLD 4,LIT 3_^1_%NUM $0202_(EQ,OR_^1_%NUM $0535_(FLD 5,LIT 3_^1_%NUM $0202_(EQ,OR_^1_%NUM $0635_(FLD 6,LIT 3_^1_%NUM $0202_(EQ,OR_^1_%NUM $0735_(FLD 7,LIT 3_^1_%NUM $0204_(EQ,END_^1_%SPC 2_^1*INTERNAL FIELD DEFINITION TABLE*_^1_%SPC 2_^1ITFTB EQU ITFTB(*)_^1F0_#NUM 7,5_*LEN=7,POS=5 - SOURCE - ' NAM '_^1F1_#NUM 7,23_)LEN=7,PO€€S=23 - T.S. LIST - ' NAM '_^1F2_#NUM 7,25_)LEN=7,POS=25 - MSOS LIST - ' NAM '_^1F3_#NUM 2,0_*LEN=2,POS=O -RELOCATABLE_^1_%SPC 1_^1*ABOVE ARE FIELDS WITH "NAM"*_^1*BELOW ARE FIELDS WITH ACTUAL NAME*_^1_%SPC 1_^1F4_#NUM 7,14_)LENGTH = 7,POS=14 - SOURCE- ACTUAL NAME_^1F5_#NUM 7,32_)LEN=7,PS=32- T.S. LIST ACTUAL NAME_^1F6_#NUM 7,34_)LEN=7,POS=34 - MSOS LIST ACTUAL NAME_^1F7_€€#NUM 6,8_*LEN=6,PS=8 - RELOCATABLE ACTUL NAME_^1_%SPC 2_^1*INTERNAL LITERAL TABLE*_^1_%SPC 2_^1ITLTB ADC L0_^1_%ADC L1_^1_%ADC L2_^1_%ADC L3_^1_%SPC 2_^1*INTERNAL LITERALS*_^1_%SPC 2_^1L0_#NUM 7_,LENGTH OF LITERAL_^1_%ALF 4, NAM_^1L1_#NUM 2_^1_%NUM $2050_(RELOCATABLE NAM_^1L2_#NUM $0_+ACTUAL NAME SPECIFIED BY USER_^1_%NUM $2000_^1_%BZS (3)_^1L3_#NUM $0_+DITTO_^1€€_%NUM $2000_^1_%BZS (3)_^1_%SPC 4_^1*******************************_^1* ROUTINES WHICH INITIALIZE_!*_^1* THE DMB FOR SELECTION_%*_^1*******************************_^1_%SPC 4_^1********************************************_^1* PNAM - POSITION TO A (GIVEN) "NAM" STMT. *_^1*_'BEFORE PROCESSING_0*_^1********************************************_^1_%SPC 1_^1PNAM_!NOP $0_^1_%LDA* ASS€€EL_(SSELECT OPTION_^1_%STA- ASLCT1,Q_^1_%LDA* XL2_^1_%RTJ* INITSL_'PERFORM STANDARD INITIALIZATION_^1_%JMP* (PNAM)_'RETURN_^1ASSEL ADC SSEL_)SSELECT TEST BLOCK_^1*******************************************_^1* TNAN - TERMINATE PROCESSING ON (GIVEN) *_^1*_'"NAM" STATEMENT._1*_^1*******************************************_^1_%SPC 1_^1TNAM_!NOP $0_^1_%LDA* ATSEL_(SSELECT OPTION_^€€1_%STA- ASLCT2,Q_^1_%LDA* XL3_^1_%RTJ* INITSL_'STANDARD INITIALIZATION_^1_%JMP* (TNAM)_'RETURN_^1ATSEL ADC TSEL_)TSELECT TEST BLOCK_^1_%SPC 2_^1*********************************************_^1* ONAM - PROCESS ONLY RECORDS WHICH CONTAIN*_^1*_'A (GIVEN) "NAM" STATEMENT_)*_^1*********************************************_^1_%SPC 1_^1ONAM_!NOP $0_^1_%LDA* ASSEL_(USS SSELECT TEST BL€€OCK_^1_%STA- ASLCT3,Q_^1_%LDA* XL2_^1_%RTJ* INITSL_'STANDARD INITIALIZATION_^1_%JMP* (ONAM)_'RETURN_^1_%SPC 2_^1****************************************_^1* SNAM - START PROCESSING AT A (GIVEN) *_^1*_'"NAM" STATEMENT AND STOP AT_!*_^1*_'NEXT "NAM" STATEMENT_)*_^1****************************************_^1_%SPC 1_^1SNAM_!NOP $0_^1_%LDA* ATSEL_^1_%STA- ASLCT2,Q_^1_%RTJ* PNAM_)SSEL€€ECT_^1_%CLR A_^1_%STA* L3_^1_%JMP* (SNAM)_^1_%SPC 2_^1*********************************************_^1* INTSEL - PERFORMS STANDARD INITIALIZATION*_^1**********************************************_^1_%SPC 1_^1_%EQU SCPHR(7)_$EQUATES USED TO REFERENCE_^1_%EQU SCNUM(5)_$SCAN CONTROL BLOCK_^1SCFLG EQU SCFLG(6)_^1INITSL NOP $0_^1_%STA* TOLIT_(WHICH LITERAL_^1_%ENA -$8_^1_%AND- €€IOBFLG,Q_^1_%INA $8_^1_%STA- IOBFLG,Q_^1_%LDA- SCFLG,I_^1_%SAN OK_+NAME IS NOT A NUMBER_^1_%JMP OPN27_(REQUEST RETYPE_^1OK_#SAP PROCED_'IF A NAME IS SPECIFIED_^1_%CLR A_,OTHERWISE MAKE LITERAL ZERO LENGTH_^1_%STA* (TOLIT)_^1_%JMP* (INITSL)_$RETURN_^1PROCED STA* (TOLIT)_^1_%RAO* (TOLIT)_^1_%LDQ* TOLIT_^1_%QLS 1_^1_%INQ 2_^1_%STQ* TOLIT_(WHERE TO PUT LITERAL_^1_%LDQ- SCPHR,I_%€ΆPUT NAME IN LITERAL AREA_^1_%RTJ MOVE_^1TOLIT ADC $0_^1_%ENA $20_*LAST CHAR. MUST BE A BLANK_^1_%RTJ SBYTE_^1_%JMP* (INITSL)_$RETURN_^1XL2_"ADC L2_^1XL3_"ADC L3_^1_%END_]_^__ ΆPPRINTI CSY/ U13 P€1_%NAM PRINTI_'DECK-ID U13 MAG TAPE UTILITY_$SUMMARY-106_^1*_$PRINTS LISTABLE DATA TAPES_^1*_$CYBER 18 / 1700 COMPUTER SYSTEMS_^1*_$SMALL SYSTEMS DIVISION, LA JOLLA, CALIFORNIA_^1*_$COPYRIGHT CONTROL DATA CORPORATION 1976_^1*_]_^1***_"PURPOSE_^1*_$-------_^1*_]_^1****_!*****************************************************************_^1*_$ENTRY POINTS_^1****_!********************€€*********************************************_^1_%ENT PRINTI_^1_%EXT PRINT,LBYTE,STNDMP_^1****_!*****************************************************************_^1*_$EXTERNALS_^1****_!*****************************************************************_^1****_!*****************************************************************_^1*_$EQUIVALENCES_^1****_!*******************************€€**********************************_^1****_]_^1_%EXT GETLOC,SYSERR,COUNT1,COUNT2_^1_%EXT INPUT,INPM1_^1_%EXT PRNDMB,PRNM1_^1_%EXT WTOR_^1_%EXT STATIS_^1_%EXT MESAGE_^1_%SPC 4_^1*********************************************_^1* PRINTI- PRINTS LISTABLE DATA TAPES_$*_^1*********************************************_^1_%SPC 4_^1PRINTI NOP 0_,ENTRY_^1_%ENA 1_^1_%STA* FIRST_^1_%€€LDA* (PRDMB)_%BOTH INPUT AND OUTPUT OPEN_^1_%AND* (IDMB)_^1_%SAM PRT005_'YES - SKIP_^1_%JMP MESAGE_'EXIT-_^1PRT005 EQU PRT005(*)_^1_%SET A_^1_%STA* LSTFLG_'INITIALIZE LSTFLG_^1_%RTJ STNDMP_'INITIALIZE PARMS_^1_%LDA =XGETEOF_^1_%ENQ 2_^1_%STA* (IDMB),Q_$SET EOF EXIT_^1_%SPC 2_^1PRTNXT EQU PRTNXT(*)_^1_%LDQ* IDMB_^1_%INQ -1_^1_%RTJ GETLOC_'READ_^1PRT009 EQU PRT009(*)_^1_%€€LDA- LRECL,Q_^1_%INA -1_^1_%STA* DAT3_^1_%LDQ- ARECL,Q_^1_%LDA* LSTFLG_^1_%SAZ CCONT_^1_%STQ* DAT4_)LISTABLE ASSEMBLER_^1_%RAO* DAT3_^1_%LDA- 12,Q_^1_%EOR =N$204E_%NAM STATEMENT_^1_%SAN PRTS_)NO_^1_%LDA- 13,Q_^1_%EOR =N$414D_^1_%SAN PRTS_)NO_^1_%ENQ 1_,PAGE EJECT_^1_%JMP* PRT060_^1PRTS_!EQU PRTS(*)_^1_%CLR Q_^1_%JMP* PRT060_^1_%SPC 4_^1CCONT EQU CCONT(*)_^1_%QLS 1_^1_%€€RTJ LBYTE_(GET CONTROL CHAR_^1_%QLS 15_+SET DATA ADDRESS_^1_%STQ* DAT4_^1CHECK ENQ 0_^1_%INA -$31_)CHECK FOR PAGE EJECT_^1_%SAN PRT050_'NO_^1_%ENQ 1_,YES_^1_%JMP* PRTLN_^1PRT050 EQU PRT050(*)_^1_%INA 1_,CHECK FOR DOUBLE SPACE_^1_%SAN PRT055_'SKIP NO_^1_%ENA 1_^1_%JMP* PRTLN_^1PRT055 EQU PRT055(*)_^1_%INA 3_,CHECK FOR TRIPLE_^1_%SAN PRT060_^1_%ENA 2_,YES_^1_%JMP* PRTL€€N_^1PRT060 EQU PRT060(*)_^1_%ENA 0_,SINGLE SPACE_^1PRTLN EQU PRTLN(*)_^1_%STA* DAT2_)SET LINE SPACE_^1_%STQ* DAT1_)SET EJECT_^1AGAIN RTJ PRINT_^1_%ADC FMT1_^1_%ADC DAT1_^1_%ADC PRNM1_^1_%LDA* FIRST_(MUST FORMS ALIGNMENT BE CHECKED_^1_%SAZ NFRST2_'NO_^1_%RTJ WTOR_)ASK OPERATOR IF FORMS ALIGNED_^1_%ADC FOMESG_^1_%SAM 1_,ITS OK_^1_%JMP* AGAIN_(TRY AGAIN_^1_%CLR A_,NO LON€€GER NESS TO CHECK_^1_%STA* FIRST_^1_%JMP* AGAIN_(CONTINUE PROCESSING_^1NFRST2 EQU NFRST2(*)_^1_%RTJ COUNT1_^1_%SAZ PRTEXT_^1_%JMP* PRTNXT_^1GETEOF RTJ COUNT2_^1_%SAZ PRTEXT_^1_%JMP* PRTNXT_^1_%SPC 4_^1PRTEXT EQU PRTEXT(*)_^1_%RTJ STATIS_'PRINT STATISTICS_^1_%JMP* (PRINTI)_$RETURN_^1_%SPC 2_^1PRDMB ADC PRNDMB_^1IDMB_!ADC INPUT_^1LSTFLG NUM 0_^1DAT1_!NUM 0_^1DAT2_!NUM €ψ0_^1DAT3_!NUM 0_^1DAT4_!NUM 0_^1FIRST NUM $0_^1FMT1_!ALF 9, .(E).(/).%A/.(E)*_^1FOMESG ALF 10,/14CFORMS ALIGNED?;_^1ARECL EQU ARECL(12)_^1_%EQU LRECL(13)_^1_%ENT FTN1_^1FTN1_!NOP 0_^1_%CLR A_^1_%STA* LSTFLG_^1_%JMP* (FTN1)_^1_%END_]_^__ψPDUMP CSY/ U14 P€1_%NAM DUMP_)DECK-ID U14 MAG TAPE UTILITY_$SUMMARY-106_^1*_$DUMPS CONTENTS OF A RECORD_^1*_$CYBER 18 / 1700 COMPUTER SYSTEMS_^1*_$SMALL SYSTEMS DIVISION, LA JOLLA, CALIFORNIA_^1*_$COPYRIGHT CONTROL DATA CORPORATION 1976_^1*_]_^1***_"PURPOSE_^1*_$-------_^1*_]_^1****_!*****************************************************************_^1*_$ENTRY POINTS_^1****_!**********************€€*******************************************_^1****_!*****************************************************************_^1*_$EXTERNALS_^1****_!*****************************************************************_^1_%EXT PRINT_^1_%EXT MESAGE_^1_%EXT COUNT1,FCOUNT_^1_%EXT COUNT2,RCOUNT,SCCB_^1_%EXT GETLOC,SPARM,FPARM_^1_%ENT DUMP_^1_%ENT SCDMP_^1_%ENT FMDMP_^1_%ENT SUDMP_^1_%ENT €€ SHDMP_^1_%EXT INPUT,INPM1_^1_%EXT PRNDMB,PRNM1_^1_%ENT HDFLAG_^1_%EXT STATIS_^1_%EXT STNDMP_^1_%ENT DUIND_^1****_!*****************************************************************_^1*_$EQUIVALENCES_^1****_!*****************************************************************_^1****_]_^1********************************************_^1*_I*_^1*_!EQUATES USED TO REFERENCE DMB_)*_^1*_€€I*_^1********************************************_^1_%SPC 4_^1IOBFLG EQU IOBFLG(1)_^1IOBFL2 EQU IOBFL2(IOBFLG+1)_^1EOFADR EQU EOFADR(IOBFL2+1)_^1ERREXT EQU ERREXT(EOFADR+1)_^1LOG1_!EQU LOG1(ERREXT+1)_^1ABUFFP EQU ABUFFP(LOG1+1)_^1LBUFFP EQU LBUFFP(ABUFFP+1)_^1MAXBLK EQU MAXBLK(LBUFFP+1)_^1RECSIZ EQU RECSIZ(MAXBLK+1)_^1ABLK_!EQU ABLK(RECSIZ+1)_^1LBLK_!EQU LBLK(ABLK+1)_^1€€ARECL EQU ARECL(LBLK+1)_^1LRECL EQU LRECL(ARECL+1)_^1BLKCNT EQU BLKCNT(LRECL+1)_^1RECCNT EQU RECCNT(BLKCNT+1)_^1ALABEL EQU ALABEL(RECCNT+1)_^1FORD_!EQU FORD(ALABEL+1)_^1RECORD EQU RECORD(FORD+1)_^1ACONV EQU ACONV(RECORD+1)_^1ASLCT1 EQU ASLCT1(ACONV+1)_^1ASLCT2 EQU ASLCT2(ASLCT1+1)_^1ASLCT3 EQU ASLCT3(ASLCT2+1)_^1_%SPC 4_^1DUMP_!NOP $0_^1_%LDA* HDFLAG_'CHECK FOR NON-€€STANDARD DUMP_^1_%SAN NOTSTN_^1_%LDA* (DMPI)_'CHECK IF IMPUT OPEN_^1_%SAM DMP05_^1NOTOPN JMP MESAGE_'EXIT_^1DMP05 LDA* (PDMPI)_^1_%SAM 1_^1_%JMP* NOTOPN_^1_%RTJ STNDMP_^1_%LDQ* DMPM1_^1_%LDA =XDMPEOF_^1_%STA- EOFADR,Q_^1NOTSTN STQ- $FF_^1_%LDQ =XPRNM1_^1_%LDA- LBUFFP,Q_^1_%INA -4_^1_%STA LINPER_^1_%LDA- MAXBLK,Q_^1_%STA CHRLIN_^1_%RTJ SETUP1_^1_%LDA* HDFLAG_^1_%SAZ NEX€€TRC_^1_%RTJ OUTPUT_^1_%JMP* RETXXX_^1NEXTRC LDQ- $FF_^1_%RTJ GETLOC_^1_%RTJ OUTPUT_^1_%RTJ COUNT1_^1_%SAZ RETXXX_^1_%JMP* NEXTRC_^1RETXXX EQU RETXXX(*)_^1_%LDA* HDFLAG_^1_%SAN RETBYP_^1_%RTJ STATIS_^1RETBYP EQU RETBYP(*)_^1_%CLR A_^1_%STA* HDFLAG_^1_%JMP* (DUMP)_^1DMPEOF RTJ COUNT2_^1_%SAN NEXTX_^1_%JMP* RETXXX_'PRINT STATISTICS_^1NEXTX JMP* NEXTRC_^1FMDMP NOP_]_^1_%J€€MP* (FMDMP)_^1SUDMP NOP_]_^1_%RAO* INDEX_^1_%RAO* INDEX_^1_%JMP* (SUDMP)_^1SHDMP NOP_]_^1_%RAO* INDEX_^1_%JMP* (SHDMP)_^1SCDMP EQU SCDMP(FMDMP)_^1PDMPI ADC PRNDMB_^1DMPI_!ADC INPUT_^1DMPM1 ADC INPM1_^1_%SPC 4_^1**********************_^1* PRINT PAGE HEADING *_^1**********************_^1_%SPC 4_^1HDFLAG NUM $0_^1PAGHDG NOP_]_^1_%LDQ* HDFLAG_'DON'T PRINT HEADING IF FLAG SE€€T_^1_%SQN IRETN_^1_%RTJ* FMTCHK_'PRINT HEADING ONLY WITH CERTAIN FORMAT_^1IRETN EQU IRETN(*)_^1_%JMP* PARETN_^1_%RAO* PAGNO_(INCREMENT PAGE COUNTER_^1_%LDA* LINCT_(INCREMENT LINES-ON-PAGE COUNTER_^1_%INA 2_^1_%STA* LINCT_^1_%RTJ* (PRINTX)_$CALL PRINT ROUTINE_^1PGFOST EQU PGFOST(*)_^1_%ADC $0_^1_%ADC PAGNO_^1_%ADC PRNM1_^1PARETN EQU PARETN(*)_^1_%JMP* (PAGHDG)_$RETURN_^1PAG€€NO NUM $0_+PAGE COUNT_^1INDEX NUM $0_^1DUIND EQU DUIND(INDEX)_^1_%SPC 4_^1**************************_^1* PRINT RECORD HEADINGS *_^1**************************_^1_%SPC 4_^1HEADNG NOP_]_^1_%RTJ* FMTCHK_'PRINT HEADINGS ONLY WITH CERTAIN FORMA_^1_%JMP* HDRETN_^1_%ENA 4_,INCREMENT LINES-ON-PAGE COUNTER_^1_%TCQ Q_^1_%AAQ A_^1_%ADD* LINCT_^1_%STA* LINCT_^1_%LDA* (XOCRLN)_^1_%CLR€€ Q_^1_%DVI =N5_^1_%STA* HDCHLN_^1_%LDA* (XOCRLN)_^1_%STA* (PLDAT)_^1_%ARS 1_^1_%STA PLDATA+1_^1_%STA* HDWDLN_^1_%LDA* (XOCRLN)_^1_%INA -1_^1_%STA* HDLAST_^1_%ENA -5_^1_%STA* CHINDX_^1_%ENA -2_^1_%STA* WDINDX_^1_%RTJ* HEADER_'PRINT FIRST PART OF HEADING_^1_%RTJ* (PRINTX)_$CALL PRINT ROUTINE_^1HDFOST EQU HDFOST(*)_^1_%ADC $0_^1_%ADC HDCHLN_^1_%ADC PRNM1_^1_%RTJ* PRLIN_(PRI€€NT LINE ACROSS TOP_^1HDRETN EQU HDRETN(*)_^1_%JMP* (HEADNG)_^1HDCHLN NUM $0_+DATA LIST_^1CHINDX NUM $0_^1HDLAST NUM $0_^1HDWDLN NUM $0_^1WDINDX NUM $0_^1PLDAT ADC PLDATA_^1_%SPC 4_^1**********************_^1* PRINT BLOCK NUMBER *_^1* AND RECORD NUMBER *_^1**********************_^1_%SPC 4_^1HEADER NOP_]_^1_%RTJ* (PRINTX)_$CALL PRINT ROUTINE_^1_%ADC FOBOTH_^1_%ADC HDATA_€€^1_%ADC PRNM1_^1_%JMP* (HEADER)_^1_%SPC 4_^1************************_^1* PRINT LINE AT TOP OR *_^1* BOTTOM OF RECORD_#*_^1************************_^1_%SPC 4_^1PRLIN NOP_]_^1_%RTJ* FMTCHK_'PRINT HEADINGS ONLY WITH CERTAIN FORMAT_^1_%JMP* PLRETN_^1_%RAO* LINCT_^1_%RTJ* (PRINTX)_^1PLFOST EQU PLFOST(*)_^1_%ADC $0_^1_%ADC PLDATA_^1_%ADC PRNM1_^1PLRETN JMP* (PRLIN)_^1_%SPC 4_^1*€€*************************************_^1* GET NUMBER OF LINES WHICH COULD BE *_^1* PRINTED ON REMAINDER OF PAGE_%*_^1**************************************_^1_%SPC 4_^1LINCT NUM $0_^1LINCTR NOP_]_^1_%LDA* LINES_(# FULL LINES LEFT IN BUFFER_^1_%SUB OLINES_'^ LINES PRINTED LAST TIME_^1_%STA* LINES_(UPDATED COUNT_^1_%LDQ* LINCT_(LINES PRINTED THIS PAGE INC. HEADINGS_^1_%ADQ OLINE€€S_^1_%STQ* LINCT_(UPDATED COUNT_^1_%CLR Q_^1_%LDA* INDEX_(LEAVE ROOM FOR HEADING?_^1_%INA -2_^1_%SAP LIN001_'IF NO HEADING_^1_%ENA 5_,GET NO. LINES FOR HEADING_^1_%SUB* INDEX_^1_%TCA Q_^1LIN001 EQU LIN001(*)_^1_%LDA* LINPER_'GET NO. OF LINES CAN BE PRINTED PER PA_^1_%AAQ A_,GET NUMBER CAN PRINT ON REST OF PAGE_^1_%SUB* LINCT_^1_%SAN CTDONE_^1_%ENA 1_^1CTDONE EQU CTDONE(*)€€_^1_%JMP* (LINCTR)_^1XOCRLN ADC OCRLIN_^1_%SPC 4_^1*************************************_^1* CHECK IF FORMATED DUMP AND IF NOT *_^1* INCREMENT RETURN POINTER BY ONE_!*_^1*************************************_^1_%SPC 4_^1FMTCHK NOP_]_^1_%LDQ* INDEX_^1_%INQ -2_^1_%SQP CHKOUT_'NO HEADING_^1_%INQ +2_^1_%RAO* FMTCHK_'RETURN 2 INSTRUCTIONS PAST CALL_^1CHKOUT EQU CHKOUT(*)_^1_%JMP*€€ (FMTCHK)_^1_%SPC 4_^1**********************************************_^1* INITIALIZATION DONE UPON EACH CALL TO DUMP *_^1**********************************************_^1_%SPC 4_^1LINPER NUM $0_+NO. LINES TO PRINT PER PAGE_^1LINES NUM $0_+NO. FULL LINES LEFT TO PRINTE_^1CHARS NUM $0_+NO. CHARACTERS LEFT OVER_^1CHRLIN NUM $0,$64,$14,$84 STANDARD FORMS WIDTHS_^1_%NUM $32,$A,€€$3C_^1PRINTX ADC PRINT_(CCN1700DUM10-001_^1_%SPC 2_^1SETUP1 NOP_]_^1_%LDA* LINPER_'HAS FORMS LENGTH BEEN SPECIFIED?_^1_%SAN NOTSTA_'IF SO_^1_%ENA 52_+USE STANDARD FORMS LENGTH_^1_%STA* LINPER_^1NOTSTA EQU NOTSTA(*)_^1_%LDQ* INDEX_^1_%LDA* CHRLIN+6_$GET 60 IN A_^1_%SUB* CHRLIN_^1_%SAM 1_,IF PRINTER FORM_^1_%INQ 3_,TTY FORM_^1_%LDA* CHRLIN+1,Q_"USE STNDARD FORMS WIDTH_^1_%STA*€€ CHRLIN_^1NOTSTD EQU NOTSTD(*)_^1_%LDQ* INDEX_^1_%CLR A_^1_%STA* PAGNO_(INITIALIZE PAGE COUNTER_^1_%LDA* OUTFOR,Q_$SET UP FORMAT ADDRESS_^1_%STA* NEWFLG_'MAKE IT NON-ZERO_^1_%STA* OTFOST_^1_%RTJ* FMTCHK_^1_%JMP* (SETUP1)_$IF NO HEADINGS DONE_^1_%LDA* HDFOLS,Q_$SET UP FORMAT ADDRESS_^1_%STA* HDFOST_^1_%LDA* PGFOLS,Q_$DITTO_^1_%STA PGFOST_^1_%LDA* PLFOLS,Q_$DITTO_^1_%STA* PLFOST_^€€1_%JMP* (SETUP1)_^1_%SPC 4_^1**********************************************_^1* GET NUMBER OF FULL LINES AND EXTRA_(*_^1* CHARACTERS IN INPUT BUFFER FOR EACH RECORD *_^1**********************************************_^1_%SPC 4_^1SETUP2 NOP 0_^1_%LDA- BLKCNT,I_^1_%STA* BLOCNO_^1_%LDA- RECCNT,I_^1_%STA* RECNO_^1_%LDA- LBLK,I_^1_%STA* BLEN_^1_%LDA- LRECL,I_^1_%STA* RLEN_^1_%CLR Q_^€€1_%STQ* OLINES_^1_%DVI* CHRLIN_'GET NO. OF FULL LINES_^1_%STA* LINES_^1_%STQ* CHARS_(NO. OF CHARACTERS LEFT OVER_^1_%LDA* CHRLIN_'SET UP OUTPUT DATA LIST_^1_%STA* OCRLIN_^1_%TCA Q_^1_%STQ* OINDEX_'DITTO_^1_%ARS 1_^1_%STA* OWDLIN_^1_%LDA- ARECL,I_^1_%STA* OINBUF_^1_%ENA 10_+CCN1700DUM10-001_^1_%STA* OLASTC_'CCN1700DUM10-001_^1_%JMP* (SETUP2)_^1_%SPC 4_^1*********************_^1*€€ OUTPUT ONE RECORD *_^1*********************_^1_%SPC 4_^1NEWFLG NUM $0_^1OUTPUT NOP_]_^1_%RTJ* SETUP2_'INITIALIZATION_^1_%LDA* NEWFLG_'START NEW PAGE?_^1_%SAZ 1_^1NEWPG JMP* NEWPAG_^1OLOOP EQU OLOOP(*)_^1_%RTJ* LINCTR_'GET NO. LINES WILL FIT ON PAGE_^1_%SAM NEWPAG_^1_%LDQ* LINES_(DETERMINE NO. LINES TO PRINT_^1_%SQN 1_^1_%JMP* LASTLN_'NO MORE FULL LINES IN BUFFER_^1_%STQ* O€€LINES_^1_%TRA Q_^1_%SUB* LINES_^1_%SAP 1_,IF A POS. BUFFER SHORTER THAN PAGE_^1_%STQ* OLINES_'ELSE CANNOT PRINT ENTIRE BUFFER_^1_%RTJ HEADNG_'PRINT RECORD HEADING_^1_%RTJ* PRINTR_'PRINT DATA_^1_%JMP* OLOOP_^1NEWPAG EQU NEWPAG(*)_^1_%CLR A_,CLEAR COUNTERS_^1_%STA* NEWFLG_^1_%STA* LINCT_^1_%STA* OLINES_^1_%RTJ PAGHDG_'PRINT PAGE HEADING_^1_%JMP* OLOOP_^1LASTLN EQU LASTLN(*)_^1€€_%LDA* CHARS_^1_%SAN 1_^1_%JMP* NONE_^1_%RAO* LINCT_^1_%LDA* OCRLIN_^1_%SUB* CHARS_^1_%TRA Q_,CCN1700DUM10-001_^1_%ALS 2_,CCN1700DUM10-001_^1_%AAQ A_,CCN1700DUM10-001_^1_%ARS 1_,CCN1700DUM10-001_^1_%INA 10_+CCN1700DUM10-001_^1_%STA* OLASTC_'CCN1700DUM10-001_^1_%ADQ* OINDEX_'CCN1700DUM10-001_^1_%STQ* OINDEX_'CCN1700DUM10-001_^1_%LDQ* CHARS_^1_%STQ* OCRLIN_'PRINT THIS MANY CHAR€€S._^1_%QRS 1_^1_%STQ* OWDLIN_^1_%LDA* OLINES_^1_%SAN NOCLUG_^1_%RTJ HEADNG_^1_%ENA 10_+CCN1700DUM10-001_^1_%STA* OLASTC_'CCN1700DUM10-001_^1NOCLUG ENA 1_^1_%STA* OLINES_'PRINT LAST LINE_^1_%RTJ* PRINTR_^1NONE_!RTJ PRLIN_^1_%JMP* (OUTPUT)_^1OLINES NUM $0_^1OCRLIN NUM $0_^1OINDEX NUM $0_^1OWDLIN NUM $0_^1OINBUF NUM $0_^1OLASTC NUM $0_^1_%SPC 4_^1**************_^1* PRINT €€DATA *_^1**************_^1_%SPC 4_^1PRINTR NOP_]_^1_%RTJ* (PRINTX)_^1OTFOST EQU OTFOST(*)_^1_%ADC $0_^1_%ADC OLINES_^1_%ADC PRNM1_^1_%JMP* (PRINTR)_^1_%SPC 4_^1OUTFOR EQU OUTFOR(*)_#OUTPUT'S FORMAT LIST_^1_%ADC OFOR0_^1_%ADC OFOR1_^1_%ADC OFOR2_^1PLFOLS EQU PLFOLS(*)_#PRLIN'S FORMAT LIST_^1_%ADC PLFORA_^1_%ADC PLFORB_^1PLDATA NUM $0,$0_(PRLIN'S DATA LIST_^1HDFOLS EQU €€ HDFOLS(*)_#HEADINGS FORMAT LIST_^1_%ADC HDFOR0_^1_%ADC HDFOR1_^1HDATA EQU HDATA(*)_$HEADER'S DATA LIST_^1BLOCNO NUM $0_^1BLEN_!NUM $0_^1RECNO NUM $0_^1RLEN_!NUM $0_^1PGFOLS EQU PGFOLS(*)_#PAGHDG'S FORMAT LIST_^1_%ADC FCD_^1_%ADC BRD_^1_%SPC 4_^1*********************_^1* FORMAT STATEMENTS *_^1*********************_^1_%SPC 4_^1FOBOTH ALF 25,/6CBLK = 5D3X7CBLEN = 5D3X6€€CREC = 5D3X7CRLEN = 5D;_^1OFOR0 ALF 17,.(.K4D4C - 2-.2+%A%2-.K2C -3-/)*_^1OFOR1 ALF 12,.(.K4D4C - .%(4H1X)%1C-_%CCN1700DUM10-001_^1_%ALF 13,.X1C*2-%4-.A%1C*1+.K3-/)*_)CCN1700DUM10-001_^1OFOR2 ALF 9,.(.2+%A%2-.K3-/)*_^1HDFOR0 ALF 20,4CCHAR4X8CPOSITION/4X.(3X5K2D1-)2X1+2D;_^1HDFOR1 ALF 12,5CCHAR 3+.(3C +2K2D1-);_^1PLFORA ALF 9,6X2C--.(1C-)2C--;_^1PLFORB ALF 19,6X2C--1+.€€(5(1C-))1C-10X2-1C*.(1C*)1C*;_^1FCD_"ALF 14,E10CASCII DUMP39X5CPAGE 5D/;_^1BRD_"ALF 13,E8CHEX DUMP36X5CPAGE 5D/;_^1_%END_]_^__€PINIT CSY/ U15 P€1_%NAM INIT_)DECK-ID U15 MAG TAPE UTILITY_$SUMMARY-106_^1*_$WRITES A VOLUME HEADER LABEL FOR MAG. TAPE_^1*_$CYBER 18 / 1700 COMPUTER SYSTEMS_^1*_$SMALL SYSTEMS DIVISION, LA JOLLA, CALIFORNIA_^1*_$COPYRIGHT CONTROL DATA CORPORATION 1976_^1*_]_^1***_"PURPOSE_^1*_$-------_^1*_]_^1****_!*****************************************************************_^1*_$ENTRY POINTS_^1****_!******€€***********************************************************_^1****_!*****************************************************************_^1*_$EXTERNALS_^1****_!*****************************************************************_^1****_!*****************************************************************_^1*_$EQUIVALENCES_^1****_!*************************************************************€€****_^1************************************_^1* INIT - WRITE VOLUME HEADER LABEL *_^1************************************_^1_%SPC 4_^1***THE FOLLOWING EQU STATEMENTS ARE USED TO ****_^1***REFERENCE THE DATA MANAGEMENT BLOCK (DMB) ****_^1*************************************************_^1_%EQU DEQU0(1)_$I0BFLG_^1_%EQU DEQU1(DEQU0+1) RESERVED_^1_%EQU DEQU2(DEQU1+1) E0FADR_^1_€€%EQU DEQU3(DEQU2+1) ERREXT_^1_%EQU DEQU4(DEQU3+1) LOG1 -_^1_%EQU DEQU5(DEQU4+1) ABUFFP_^1_%EQU DEQU6(DEQU5+1) LBUFFP_^1_%EQU DEQU7(DEQU6+1) MAXBLK_^1_%EQU DEQU8(DEQU7+1) RECSIZ_^1_%EQU DEQU9(DEQU8+1) ABLK_^1_%EQU DEQU10(DEQU9+1) LBLK_^1_%EQU DEQU11(DEQU10+1) ARECL_^1_%EQU DEQU12(DEQU11+1) LRECL_^1_%EQU DEQU13(DEQU12+1) BLKCNT_^1_%EQU DEQU14(DEQU13+1) RECCNT_€€^1_%EQU DEQU15(DEQU14+1) ALABEL_^1_%EQU DEQU16(DEQU15+1) FORD -_^1_%EQU DEQU17(DEQU16+1) RECORD_^1_%EQU DEQU18(DEQU17+1) ACONV_^1_%EQU DEQU19(DEQU18+1) ASLCT1_^1_%EQU DEQU20(DEQU19+1) ASLCT2_^1_%EQU DEQU21(DEQU20+1) ASLCT3_^1********************************************_^1* THE FOLLOWING EQU STATEMENTS ARE USED TO *_^1* REFERENCE THE SCAN CONTROL BLOCK_(*_^1***********€€*********************************_^1_%EQU SAINP(1)_^1_%EQU SINPLN(SAINP+1)_^1_%EQU SNCA(SINPLN+1)_^1_%EQU SCPHR(SNCA+1)_^1_%EQU SCPHL(SCPHR+1)_^1_%EQU SCFLG(SCPHL+1)_^1_%EQU SCNUM(SCFLG+1)_^1_%EQU EOS(SCNUM+1)_^1_%SPC 2_^1_%ENT INIT_^1_%EXT OPENIO,WTOR,SBYTE,MOVE,SCAN_^1_%EXT PRINT,OUTM1,OPEN,CLOSE_^1_%EXT RETYPE_^1****_]_^1_%SPC 4_^1**********************************€€************_^1*_L*_^1* INIT - INITIALIZE WRITES VOLUME 1 HEADER *_^1*_(LABELS._<*_^1*_L*_^1**********************************************_^1_%SPC 4_^1INIT_!NOP $0_^1_%RTJ OPENIO_'OPEN AND INITIALIZE DMB_^1ITSOPN CLR A_,INITIALIZE VOLSER NUM_^1_%STA* BUFERX_^1_%STA* BUFERX+1_^1INLOOP RAO* BUFERX+1_^1_%RTJ* (XWTOR)_%WRIT MOUNT MESSAGE_^1_%ADC MOUNT_^1_%SAM CONTIN_^1_%JMP* (I€€NIT)_'EXIT_^1CONTIN EQU CONTIN(*)_^1_%LDQ* XOUTM1_^1_%LDA- 1,Q_^1_%SAM OPN_^1_%RTJ OPEN_^1OPN_"EQU OPN(*)_^1_%LDA* XBUFER_^1_%RTJ* (XWTOR)_%WRITE VOLSER NUM. MESSAGE_^1_%ADC VOLSER_^1OPN2_!EQU OPN2(*)_^1_%SAP 1_,HAS HE TYPED IN A NUMBER?_^1_%JMP* USEIT_(NO, HE HAS NOT_^1_%LDA- EOS,I_(CHECK FOR MAXIMUM LENGTH_^1_%INA -8_+UP TO 7 DIGITS AND EOL OK_^1_%SAM OPN3_)IF NEGATIVE L€€ESS THAN 6 DIGITS OR EQUAL_^1_%RTJ RETYPE_'TOO LONG GET NEXT_^1_%JMP* OPN2_)HE TRIED AGAIN_^1OPN3_!EQU OPN3(*)_^1_%LDA- SCPHL,I_^1_%SAZ INNUM_^1_%JMP* ALPHA_^1INNUM EQU INNUM(*)_^1_%RTJ* GETNO_(YES, PUT IT IN DATA BUFFER_^1USEIT RTJ* (XPRINT)_$WRITE VOL. HEADER LABEL_^1_%ADC FORNO_(FORMAT STATEMENT_^1XBUFER ADC BUFERX_'DATA BUFFER_^1_%ADC OUTM1_(OUTPUT DMB-1_^1_%RTJ* CLOSI€€T_^1_%LDA* BUFERX+1_$INCREMENT VOLSR NO._^1_%SUB =N9999_^1_%SAM 1_^1_%JMP* ITSOPN_^1_%JMP* INLOOP_^1_%SPC 2_^1CLOSIT NOP $0_^1_%LDQ* XOUTM1_^1_%ENA -3_^1_%AND- 1,Q_^1_%INA 3_^1_%STA- 1,Q_^1_%RTJ CLOSE_^1_%JMP* (CLOSIT)_^1_%SPC 2_^1ALPHA LDA- SCPHR,I_^1_%ALS 15_^1_%STA* ALFDAT_'GET ADDR. OF ALPHA PHRASE_^1_%LDA- EOS,I_^1_%INA -1_^1_%STA* ALFDAT+1_^1_%ENA 6_^1_%SUB* ALFDA€€T+1_^1_%SAP 1_^1_%CLR A_^1_%INA 69_^1_%STA* ALFDAT+2_^1_%RTJ* (XPRINT)_$WRITE FOL. HEADER LABEL_^1_%ADC FORALF_^1_%ADC ALFDAT_^1XOUTM1 ADC OUTM1_^1_%RTJ* CLOSIT_^1_%JMP* ITSOPN_^1XPRINT ADC PRINT_^1XWTOR ADC WTOR_^1_%SPC 2_^1GETNO NOP $0_^1_%CLR Q_^1_%STQ* BUFERX_^1_%LDA- EOS,I_^1_%INA -6_^1_%SAP 1_^1_%JMP* LE4_*NO_^1_%LDQ* XBUFER_'YES_^1_%QLS 1_,CONVERT TO CHAR. AD€€DR._^1_%SAN 1_,STORE IN CORRECT HALF OF WORD_^1_%INQ 1_^1_%STQ* BUFX1_^1_%STQ- SNCA,I_^1_%INA 1_^1_%LDQ- SCPHR,I_^1_%RTJ* (XMOVE)_%MOVE FIRST 1 OR 2 DIGITS TO BUFFER_^1BUFX1 ADC $0_^1_%ENA $2C_*STORE COMMA AFTER_^1_%RTJ* (XSBYTE)_^1_%STQ* BUFX2_^1_%LDQ- SCPHR,I_%MOVE LAST 4 DIGITS_^1_%ADQ- EOS,I_^1_%INQ -5_^1_%ENA 5_^1_%RTJ* (XMOVE)_^1BUFX2 ADC $0_^1_%RTJ* (XSCAN)_%SCAN B€€UFFER_^1_%LDA- SCNUM,I_^1_%STA* BUFERX_'GET FIRST HEX WORD_^1_%RTJ* (XSCAN)_^1LE4_"LDA- SCNUM,I_%GET SECOND HEX WORD_^1_%STA* BUFERX+1_^1_%JMP* (GETNO)_%EXIT_^1XSCAN ADC SCAN_^1XMOVE ADC MOVE_^1XSBYTE ADC SBYTE_^1ALFDAT ADC $0_^1_%NUM 0_^1_%NUM 0_^1BUFERX BZS BUFERX(4)_^1_%SPC 3_^1MOUNT ALF 14,24CMOUNT, OUTPUT, SCRATCH: ;_^1VOLSER ALF 11,9C*VOLSER= 2D4D2C :;_^1FORNO A€FLF 9,4CVOL12D4D69X1C1;_^1FORALF ALF 8,4CVOL1%.A%.X1C1;_^1_%END_]_^__FPSTNLAB CSY/ U16 P€1_%NAM STNLAB_'DECK-ID U16 MAG TAPE UTILITY_$SUMMARY-106_^1*_$VERIFIES AND WRITES STANDARD MAG. TAPE LABELS_^1*_$CYBER 18 / 1700 COMPUTER SYSTEMS_^1*_$SMALL SYSTEMS DIVISION, LA JOLLA, CALIFORNIA_^1*_$COPYRIGHT CONTROL DATA CORPORATION 1976_^1*_]_^1***_"PURPOSE_^1*_$-------_^1*_]_^1*****************************************************_^1*_R*_^1* OPENSL - OPEN FILE WITH STANDARD€€ LABELS_(*_^1*_+PROCESSES INPUT AND OUTPUT FILES_%*_^1*_R*_^1* CALLING SEQUENCE:_?*_^1*_*(I) = ADC DMB-1_8*_^1*_*RTJ OPENSL_=*_^1*_*RETURN - NORMAL_8*_^1*_*ERROR RETURN EXITS TO SYSTEM ERROR_$*_^1*_*PROCESSOR_>*_^1*_R*_^1* USE OF OPENSL:_B*_^1*_$OPENSL IS CALLED BY OPEN IF THE IOBFLG_%*_^1*_$INDICATES STANDARD LABELS. THE FIRST OPEN_!*_^1*_$ALLOCATES A DMB EXTENSION AND INITIALI€€ZES_"*_^1*_$THE VOLUME SEQUENCE NUMBER TO 1. PROCESSING *_^1*_$INVOLVES VERFICATION, AND WRITING OF ALL_#*_^1*_$STANDARD LABELS. OPENSL MAY BE CALLED_%*_^1*_$DURING FUNCTIONAL PROCESSING TO HANDLE_%*_^1*_$ANY SPECIAL CONDITIONS_6*_^1*_R*_^1*****************************************************_^1****_!*****************************************************************_^1*_$ENTRY POI€€NTS_^1****_!*****************************************************************_^1_%ENT STNLAB_^1_%ENT SDATE_^1_%ENT EDATE_^1_%ENT CLSLAB_^1_%ENT RLLAB_^1_%ENT RELLAB_^1_%ENT EOFSL_^1_%ENT AVSEOT_^1****_!*****************************************************************_^1*_$EXTERNALS_^1****_!*****************************************************************_^1_%EXT NOLABL_^1_€€%EXT INPM1_^1_%EXT TTYDM1_^1_%EXT GETBUF_^1_%EXT SYSERR_^1_%EXT WTOR_^1_%EXT CLRRGN_^1_%EXT PRINT_^1_%EXT RELBUF_^1_%EXT MOTION_^1_%EXT GETLOC_^1_%EXT GETFF_^1_%EXT READ_^1_%EXT PUTLOC_^1_%EXT PUTMOV_^1_%EXT WRITE_^1_%EXT SBYTE_^1_%EXT SCAN_^1_%EXT INITBF_^1_%EXT SETCNT_^1_%EXT MOVE_^1_%EXT SCCBM1_^1_%EXT FMTMSG_^1_%EXT LBYTE,LBYTE2_^1****_!******************€€***********************************************_^1*_$EQUIVALENCES_^1****_!*****************************************************************_^1****_]_^1***********************************_^1*_@*_^1* EQUATES USED TO REFERENCE THE *_^1* DATA MANAGEMENT BLOCKS.THEY *_^1* ARE USED IN CONJUNCTION WITH_!*_^1* AN INDEX REGISTERSET TO THE_!*_^1* ADDRESS OF THE DMB-1._)*_^1*_@*_^1*****€€******************************_^1_%SPC 4_^1IOBFLG EQU IOBFLG(1)_^1IOBFL2 EQU IOBFL2(IOBFLG+1)_^1EOFADR EQU EOFADR(IOBFL2+1)_^1ERREXT EQU ERREXT(EOFADR+1)_^1LOG1_!EQU LOG1(ERREXT+1)_^1ABUFFP EQU ABUFFP(LOG1+1)_^1LBUFFP EQU LBUFFP(ABUFFP+1)_^1MAXBLK EQU MAXBLK(LBUFFP+1)_^1RECSIZ EQU RECSIZ(MAXBLK+1)_^1ABLK_!EQU ABLK(RECSIZ+1)_^1LBLK_!EQU LBLK(ABLK+1)_^1ARECL EQU ARECL(L€€BLK+1)_^1LRECL EQU LRECL(ARECL+1)_^1BLKCNT EQU BLKCNT(LRECL+1)_^1RECCNT EQU RECCNT(BLKCNT+1)_^1EXTPTR EQU EXTPTR(RECCNT+1)_^1FORD_!EQU FORD(EXTPTR+1)_^1RECORD EQU RECORD(FORD+1)_^1ACONV EQU ACONV(RECORD+1)_^1ASLCT1 EQU ASLCT1(ACONV+1)_^1ASLCT2 EQU ASLCT2(ASLCT1+1)_^1ASLCT3 EQU ASLCT3(ASLCT2+1)_^1_%SPC 4_^1*********************************************_^1*_J*_^1* EQUATE€€S USED TO REFERENCT THE_+*_^1* EXTENTION OF THE DATA MANAGEMENT_(*_^1* BLOCKS REQUIRED FOR LABEL PROCESSING._"*_^1*_J*_^1*********************************************_^1_%SPC 4_^1EXTDMB EQU EXTDMB(1)_^1DMBPTR EQU DMBPTR(EXTDMB)_^1ISECTN EQU ISECTN(DMBPTR+1)_^1ISEQN EQU ISEQN(ISECTN+1)_^1LABADR EQU LABADR(ISEQN+1)_^1LABID EQU LABID(LABADR+1)_^1FILEID EQU FILEID(LABID+1)_€€^1FSECTN EQU FSECTN(FILEID+9)_^1FSEQN EQU FSEQN(FSECTN+1)_^1FCRDTE EQU FCRDTE(FSEQN+1)_^1FEXDTE EQU FEXDTE(FCRDTE+3)_^1FBLK_!EQU FBLK(FEXDTE+3)_^1HDRTP EQU HDRTP(FBLK+1)_^1FRECFM EQU FRECFM(HDRTP+1)_^1FBLKS EQU FBLKS(FRECFM+1)_^1FRECS EQU FRECS(FBLKS+1)_^1LEXTD EQU LEXTD(FRECS)_^1_%SPC 4_^1LABELX EQU LABELX(0)_^1LABNUM EQU LABNUM(LABELX+3)_^1VOLSR EQU VOLSR(LABN€€UM+1)_^1ACCESS EQU ACCESS(VOLSR+6)_^1RESVD1 EQU RESVD1(ACCESS+1)_^1RESVD2 EQU RESVD2(RESVD1+20)_^1OWNID EQU OWNID(RESVD2+6)_^1RESSTD EQU RESSTD(OWNID+14)_^1LSL_"EQU LSL(RESSTD+28)_^1_%SPC 2_^1HFILID EQU HFILID(LABNUM+1)_^1HSETID EQU HSETID(HFILID+17)_^1HFSECN EQU HFSECN(HSETID+6)_^1HFSEQN EQU HFSEQN(HFSECN+4)_^1HGENO EQU HGENO(HFSEQN+4)_^1HGENVR EQU HGENVR(HGENO+4)_^€€1HCRDT EQU HCRDT(HGENVR+2)_^1HEXDT EQU HEXDT(HCRDT+6)_^1HACESS EQU HACESS(HEXDT+6)_^1HBLCT EQU HBLCT(HACESS+1)_^1HSYSCD EQU HSYSCD(HBLCT+6)_^1HRESVO EQU HRESVO(HSYSCD+13)_^1RECFMT EQU RECFMT(LABNUM+1)_^1VBLEN EQU VBLEN(RECFMT+1)_^1VRLEN EQU VRLEN(VBLEN+5)_^1VRESV EQU VRESV(VRLEN+5)_^1BUFOFF EQU BUFOFF(VRESV+35)_^1VRESTD EQU VRESTD(BUFOFF+2)_^1_%SPC 4_^1_%SPC 4_^€€1****************************************_^1*_$MOTION EQUATES_1*_^1****************************************_^1_%SPC 2_^1REWIND EQU REWIND(3)_^1SFILEM EQU SFILEM(5)_^1UNLOAD EQU UNLOAD(4)_^1SFILEB EQU SFILEB(6)_^1BACKSP EQU BACKSP(1)_^1WFILEM EQU WFILEM(2)_^1_%SPC 2_^1_%SPC 4_^1****************************************_^1*_!SCAN CONTROL BLOCK EQUATES_'*_^1*******************€€*********************_^1_%SPC 2_^1SAINP EQU SAINP(1)_^1SINPLN EQU SINPLN(SAINP+1)_^1SNCA_!EQU SNCA(SINPLN+1)_^1SCPHR EQU SCPHR(SNCA+1)_^1SCPHL EQU SCPHL(SCPHR+1)_^1SCFLG EQU SCFLG(SCPHL+1)_^1SCNUM EQU SCNUM(SCFLG+1)_^1EOS_"EQU EOS(SCNUM+1)_^1_%SPC 4_^1***********************************_^1* ERROR EQUATES_1*_^1***********************************_^1_%SPC 2_^1S000_!EQ€€U S000(64)_^1S007_!EQU S007(71)_^1S009_!EQU S009(73)_^1S013_!EQU S013(77)_^1S012_!EQU S012(76)_^1_%SPC 4_^1MOTN3 ADC MOTION_^1STNLAB NOP 0_^1_%LDQ- EXTPTR,I_$CHECK IF DMB EXTENT EXISTS_^1_%SQN SL0020_'YES_^1_%RTJ* GETEXT_'NO ALLOCATE A DMB EXTENT_^1SL0020 EQU SL0020(*)_^1_%LDA- ISEQN,Q_%FILE ORDINAL = 0_^1_%SAN SL0030_'NO_^1_%RTJ* (IRDVOL)_$PROCESS VOL1 HEADER_^1_%ENA €€1_^1_%STA- ISECTN,Q_$SET VOLUME SEQUENCE TO ONE_^1_%STA- ISEQN,Q_%UPDATE FILE SEQUENCE NUMBER_^1SL0030 EQU SL0030(*)_^1_%LDA- FORD,I_'POSITIONING REQUIRED_^1_%SAN SL0031_'SKIP FILES_^1_%JMP* SL0040_^1SL0031 EQU SL0031(*)_^1_%RTJ SETCNT_^1COUNT NUM $0_^1_%CLR A_^1_%STA- FORD,I_^1SL0032 EQU SL0032(*)_^1_%RTJ* (XRD12)_%READ HEADER LABELS_^1_%SAM SKPERR_'BAD LABEL OF NO LABEL€€_^1SL0035 EQU SL0035(*)_^1_%ENA SFILEM_'POSITION PAST DATA_^1_%RTJ* (MOTN3)_^1_%RTJ RDHDR_(READ TRAILER LABEL_^1_%SAZ SKPERR_'IF NO TRAILER LABEL_^1_%SAM SKPERR_'IF BAD TRAILER LABEL_^1_%INA -4_+IS IT EOV_^1_%SAN SLCNT_(NO ITS EOF_^1_%RTJ AVSEOV_'GET NEXT VOLUME_^1_%JMP* SL0035_^1SKPERR EQU SKPERR(*)_^1_%ENA S009_^1_%JMP* SL0098_^1SL0040 EQU SL0040(*)_^1_%LDA- IOBFLG,I_$€€CHECK IF OUTPUT_^1_%ALS 1_^1_%SAP SL0050_'POSITIVE IMPLIES INPUT_^1_%JMP* SL0101_'PROCESS OUTPUT_^1SLCNT EQU SLCNT(*)_^1_%RAO- ISEQN,Q_^1_%ENA SFILEM_^1_%RTJ* (MOTN3)_^1_%RAO* COUNT_^1_%SNO 1_^1_%JMP* SL0040_^1_%JMP* SL0032_^1_%SPC 2_^1***************************_^1* INPUT LABEL PROCESSING *_^1***************************_^1_%SPC 2_^1XRD12 ADC RDHD12_'ADDRESS OF READ HEAR€€DER ROUTINE_^1SL0050 EQU SL0050(*)_^1_%RTJ* (XRD12)_%READ HEADER ONE ADN TWO_^1_%SAZ SL0100_'READ BOTH HEADERS OK_^1_%SAP SL0098_'ERROR_^1_%ENA S007_)FILE MARK CANNOT CONTINUE_^1SL0098 EQU SL0098(*)_^1_%RTJ LABERR_^1SL0100 EQU SL0100(*)_^1_%RTJ NOLABL_'COMPLETE OPEN PROCESSING_^1_%JMP* (STNLAB)_^1_%SPC 4_^1****************************************_^1*_!OUTPUT LABEL PROCESSI€€NG_+*_^1****************************************_^1_%SPC 4_^1SL0101 EQU SL0101(*)_^1_%RTJ* CHKHDR_'READ HEADER AND VERIFY VOLUME EXPIRATION_^1SL0130 EQU SL0130(*)_^1_%LDQ =XINPM1_%USE LABELS FROM INPUT DMB_^1_%LDA- IOBFLG,Q_^1_%SAP NTOPN_(NO_^1_%ALS 6_^1_%SAP NTOPN_(NO_^1_%ENA FILEID_'COMPUTE ADDRESS OF DSN_^1_%ADD- EXTPTR,Q_^1_%ALS 1_^1_%STA* DSNPTR_^1_%INA FEXDTE+FEXDTE€€-FILEID-FILEID_^1_%STA* EXPDT1_^1_%ENA 17_^1_%JMP* SL0140_^1NTOPN EQU NTOPN(*)_^1_%RTJ* GETDSN_'OBTAIN DATE AND DSN FROM OPERATOR_^1_%STQ* DSNPTR_^1_%LDQ EXPDTE_^1_%QLS 1_^1_%STQ* EXPDT1_^1SL0140 EQU SL0140(*)_^1_%LDQ SYSDAT_'GET CURRENT DATE % USE AS_^1_%QLS 1_,CREATION DATE_^1_%STQ* CRDT1_^1_%RTJ* DSNBLD_'SET EXTENT LABEL INFO_^1DSNPTR NUM 0_^1CRDT1 NUM 0_^1EXPDT1 NUM €€ 0_^1_%LDQ- EXTPTR,I_$OBTAIN EXTENT POINTER_^1_%LDA- MAXBLK,I_$SET HDR2_^1_%STA- FBLKS,Q_%BLOCK SIZE_^1_%LDA- RECSIZ,I_^1_%STA- FRECS,Q_%AND RECORD SIZE_^1_%LDA- IOBFLG,I_$CHECK FORMAT_^1_%ALS 3_^1_%SAP SL0150_^1_%ENA $56_*VARIABLE_^1_%JMP* SL0160_^1SL0150 EQU SL0150(*)_^1_%ALS 1_^1_%SAP SLUNDF_^1_%ENA $46_*FIXED_^1_%JMP* SL0160_^1SLUNDF EQU SLUNDF(*)_^1_%CLR A_,UNDEFINED €€SO CLEAR RECORD SIZE_^1_%STA- FRECS,Q_^1_%ENA $55_^1SL0160 EQU SL0160(*)_^1_%ALS 8_,SET FORMAT CODE_^1_%STA- FRECFM,Q_^1_%RTJ* WHD12_^1_%JMP* (STNLAB)_^1_%SPC 4_^1****************************************_^1*_$GETEXT - ALLOCATE DMB EXTENT_"*_^1*_.(I) = DMB_-*_^1****************************************_^1_%SPC 2_^1GETEXT NOP 0_^1_%ENA LEXTD_(LENGTH OF EXTENT_^1_%RTJ GETBUF_^1€€_%SQN SL0010_'SPACE NOT FOUND IF Q IS ZERO_^1_%ENA S000_)NO SPACE - ERROR_^1_%RTJ SYSERR_^1SL0010 EQU SL0010(*)_^1_%INQ -1_^1_%ENA LEXTD_(CLEAR EXTENT_^1_%RTJ CLRRGN_^1_%STQ- EXTPTR,I_$CHAIN EXTENT TO DMB AND_^1_%LDA- $FF_*DMB TO EXTENT_^1_%STA- EXTDMB,Q_^1_%JMP* (GETEXT)_$RETURN_^1IRDVOL ADC RDVOL1_^1_%SPC 4_^1_%SPC 4_^1****************************************_^1*_!WRITE€€ OUTPUT HEADER 1 AND 2_'*_^1****************************************_^1WHD12 NOP 0_^1_%ENA 0_^1_%RTJ WRHDR_(WRITE HEADER 1 AND 2_^1_%ENA WFILEM_^1_%RTJ* (MOTN)_'WRITE A FILEMARK_^1_%JMP* (WHD12)_%RETURN_^1_%SPC 4_^1***********************************************_^1*_"CHKHDR VERIFIES HEADER 1 ON AN OUTPUT_!*_^1*_+FILE. MAKES SURE VOLUME IS AVAIL-*_^1*_+ABLE. REQUESTS NEW VOL€€UME IF IT *_^1*_+IS NOT AVAILABLE. ON RETURN_#*_^1*_+THERE IS A VOLUME MOUNTED WHICH *_^1*_+CAN BE USED._4*_^1***********************************************_^1_%SPC 4_^1CHKHDR NOP 0_^1_%RTJ* RDHDR_(GET HEADER IF IT EXISTS_^1_%SAN SL0107_'FILEMARK?_^1_%ENA SFILEB_'YES SKIP BACKWARDS_^1SL0105 EQU SL0105(*)_^1_%RTJ* (MOTN)_^1_%JMP* (CHKHDR)_$RETURN_^1SL0107 INA -2_+HDR1?_^1_%€€SAZ SL0110_'YES_^1SL0109 ENA BACKSP_'NO BACKSPACE OVER IT_^1_%JMP* SL0105_^1SL0110 EQU SL0110(*)_^1_%RTJ LABDTE_'HDR1 CHECK EXPIRATION DATE_^1_%SAP SL0120_^1_%RTJ* (IRDVOL)_$GET NEXT VOLUME FOR PROCESSING_^1_%JMP* CHKHDR+1_$RETRY NEXT VOLUME_^1SL0120 EQU SL0120(*)_^1_%JMP* SL0109_'BACKSPACE OVER HEADER_^1_%SPC 4_^1_%ENT GETDSN_^1GETDSN NOP 0_^1_%RTJ SVENT_(SAVE CONSTNATS€€_^1RETRY1 RTJ WTOR_)OBTAIN DSN_^1_%ADC DSNMSG_^1_%LDA- SCFLG,I_%USE Q AS PONTER TO CSSCCB_^1_%SAZ DSNERR_'CHECK FOR CHARS_^1_%INA -18_^1_%SAM DSNOK_(LESS THAN 18 CHARS_^1DSNERR EQU DSNERR(*)_^1_%JMP* RETRY1_'ERROR - TRY AGAIN_^1DSNOK INA 18_^1_%LDQ- SCNUM,I_^1_%STQ* GETI_^1_%RTJ RSEXT_(RESET PARMS_^1_%LDQ* GETI_^1_%JMP* (GETDSN)_^1GETI_!NUM 0_^1_%SPC 4_^1****************€€*************************_^1*_%DSNBLD- MOVE DSN TO EXTENDED_!*_^1*_/DMB, ALSO MOVE DATES_!*_^1*_%CALLING SEQUENCE_/*_^1*_+(A)= LENGTH OF DSN IN CHARS*_^1*_+(Q)= ADDRESS OF DMB EXTENT *_^1*_*RTJ_!DSNBLD_.*_^1*_+ADC_!DSN_"CHARACTER ADC *_^1*_+ADC_!CRDTE CHARACTER ADC *_^1*_+ADC_!EXDTE CHARACTER ADC *_^1*_+RETURN I % Q UNCHANGED_#*_^1*****************************************_^1_%SPC€€ 4_^1DSNBLD NOP 0_^1_%STA* LDSN_)SAVE NUMBER OF CHARS TO XFER_^1_%TCA A_,COMPUTE TRAILING BLANKS_^1_%INA 22_+STORE BLANKS IN REMAINDER OF DSN AND FSECTN AN_^1_%STA* LBFILL_^1_%RTJ* PARM_)GET DSN_^1_%STA* DSN_^1_%RTJ* PARM_)GET CREATION DATE_^1_%STA* CRDTE_^1_%RTJ* PARM_)GET EXPIRATION DATE_^1_%STA* EXDTE_^1_%ENA FILEID_^1_%ADD- EXTPTR,I_^1_%LDQ* TTDMB_(USE TTYDMB TO XFER DATA €€VIA FORMAT RTN_^1_%STA- ARECL,Q_%SET RECORD ADDRESS_^1_%STA- ABLK,Q_'AND BLOCK ADDRESS_^1_%RTJ PRINT_(CALL PRINT TO XFER DATA TO EXTENT BLOCK_^1_%ADC FMT_^1_%ADC DTLST_^1TTDMB ADC TTYDM1_^1_%LDQ* TTDMB_^1_%LDA- ABUFFP,Q_$RESET THE TTYDMB_^1_%STA- ABLK,Q_^1_%STA- ARECL,Q_^1_%LDQ- EXTPTR,I_$RESET Q_^1_%JMP* (DSNBLD)_^1_%SPC 2_^1PARM_!NOP 0_^1_%LDA* (DSNBLD)_$GET PARAMETER_^1_%€€ALS 15_+CONVERT TO WORD ADDRESS_^1_%RAO* DSNBLD_^1_%JMP* (PARM)_'RETURN_^1DTLST EQU DTLST(*)_^1DSN_"NUM 0_^1LDSN_!NUM 0_^1LBFILL NUM 0_^1CRDTE NUM 0_^1EXDTE NUM 0_^1MOTN_!ADC MOTION_'ADDRESS OF MOTION SUBROUTINE_^1_%SPC 2_^1****************************************_^1*_!READ HEADER ONE AND TWO_+*_^1*_!CALLING SEQUENCE_2*_^1*_*(I) = DMB-1_.*_^1*_*RTJ RDHD12_0*_^1*_*(A) = €€FFFF ON RETURN = FM_!*_^1*_*(A) = + ON RET = ERROR CODE *_^1*_*(I) = DMB-1_/*_^1****************************************_^1_%SPC 4_^1RDHD12 NOP 0_,ENTRY_^1_%RTJ* RDHDR_(READ HEADER ONE_^1_%INA -2_^1_%SAZ SL0060_'FILE MARK_^1_%SET A_,NOT A VALID LABEL OR A FILEMARK_^1_%JMP* (RDHD12)_$RETURN P+1_^1SL0060 EQU SL0060(*)_^1_%LDA- ISEQN,Q_%OW CHECK FILE SEQUENCE NUMBER_^1_%SUB- FSE€€QN,Q_^1_%SAZ SL0065_'OK CONTINUE_^1SL0064 ENA S007_)NOT OK_^1_%JMP* (RDHD12)_$RETURN ERROR FILE SEQUNCE INCORR_^1SL0065 EQU SL0065(*)_^1_%LDA- ISECTN,Q_$CHECK VOLUME NUMBERS_^1_%SUB- FSECTN,Q_^1_%SAZ SL0070_^1_%ENA S013_)VOLUME SEQUENCE NUMBERS WRONG_^1_%JMP* (RDHD12)_^1SL0070 EQU SL0070(*)_^1_%RTJ* RDHDR_(GET HEADER 2_^1_%SAZ SL0080_'FILE MARK - NO HEARDER TWO_^1_%ENA SFIL€€EM_^1_%RTJ* (MOTN)_^1SL0080 EQU SL0080(*)_^1_%CLR A_,NO ERROR_^1_%JMP* (RDHD12)_$RETURN TO P+2_^1_%SPC 4_^1*************************************_^1* RDHDR - READ A TAPE LABEL AND_"*_^1*_)INITIALIZE THE DMB_%*_^1*_)EXTENTION ACCORDING TO_!*_^1*_)THE TYPE OF LABEL._%*_^1*_!CALL - RTJ RDHDR_^1*_)(I)=DMB-1_^1*_!RETURN -(I)=DMB-1_-*_^1*_)- (Q)=PTR. TO DMB_'*_^1*_.EXTENTION_)*_^1****€€*********************************_^1_%SPC 4_^1S8_#EQU S8(72)_^1RDHDR NOP $0_^1_%RTJ RLABEL_'READ THE LABEL_^1_%LDQ- $FF_*SAVE I_^1_%STQ* SAVIT_^1_%LDQ- EXTPTR,I_^1_%STA- HDRTP,Q_%SAVE HEADER TYPE IN EXTENT_^1_%LDQ- LABADR,Q_^1_%QLS 1_,CONVERT TO CHARACTER ADDRESS_^1_%STQ* RECADR_'SAVE ADDR. OF ACTUAL LA_^1_%SAP 1_^1_%JMP* NORMAL_'NOT A PROPER LABEL_^1_%TRA Q_^1_%LDQ* JMPTAB€€,Q_^1_%JMP- 1,Q_*GO TO PROCESSING ROUTINE_^1HDR1_!EQU HDR1(*)_^1_%LDA* RECADR_'SET UP CALL TO DSNBLD_^1_%INA HFILID_^1_%STA* HID_^1_%INA HCRDT-HFILID_^1_%STA* CREATE_^1_%INA HEXDT-HCRDT_^1_%STA* EXPIRE_^1_%ENA 17_^1_%RTJ* DSNBLD_'PUT DATA SET NAME AND DATES_^1HID_"NUM $0_+IN DMB EXT._^1CREATE NUM $0_^1EXPIRE NUM $0_^1_%RTJ* STBLKC_'SET THE BLOCK COUNT_^1_%LDQ* RECADR_^1_%IN€€Q HFSEQN_^1_%ENA 4_^1_%RTJ* CONVTX_^1_%STA- FSEQN,Q_%SAME FILE SEQUENCE NO._^1_%LDQ* RECADR_^1_%INQ HFSECN_^1_%ENA 4_^1_%RTJ* CONVTX_^1_%STA- FSECTN,Q_$AND FILE SECTION NO._^1_%JMP* NORMAL_^1HDR2_!EQU HDR2(*)_^1_%RTJ* SAVE_^1_%LDQ* RECADR_^1_%INQ VRLEN_^1_%ENA 5_^1_%RTJ* CONVTX_^1_%STA- FRECS,Q_%PUT RECORD LENGTH IN DMB EXT._^1_%LDQ* RECADR_^1_%INQ VBLEN_^1_%ENA 5_^1_%RTJ*€€ CONVTX_^1_%STA- FBLKS,Q_%SAME WITH BLOCK LENGTH_^1_%LDQ* RECADR_^1_%INQ RECFMT_^1_%RTJ* (XLBYTE)_$AND RECORD FORMAT CODE_^1_%LDQ* SAVIT_^1_%STQ- $FF_^1_%LDQ- EXTPTR,Q_^1_%STA- FRECFM,Q_^1_%LDA =N$C7FF_%INITIALIZE DMB_^1_%AND- IOBFLG,I_^1_%STA- IOBFLG,I_^1_%LDA- FBLKS,Q_%SET BLOCKSIZE_^1_%STA- MAXBLK,I_^1_%SUB- FRECS,Q_%CHECK IF BLOCKING_^1_%SAZ SL0087_'SKIP IF NO_^1_%LDA- FRECS€€,Q_%CHECK IF UNDEFINED_^1_%SAZ SL0087_^1_%STA- RECSIZ,I_$NOT ZERO AND BLOCKED_^1_%LDA- IOBFLG,I_^1_%ADD* N2000_(SET BLOCKING FLAG_^1_%STA- IOBFLG,I_^1_%JMP* SL0088_^1SL0087 EQU SL0087(*)_^1_%LDA- MAXBLK,I_$SET RECSIZ = BLKSIZ SINCE RECORD IS UNDEFINED_^1_%STA- RECSIZ,I_$OR UNBLCKED_^1SL0088 EQU SL0088(*)_^1_%LDA- FRECFM,Q_$CHECK RECORD FORMAT_^1_%INA -$46_)IS IT 'F'_^1_%SAN SL€€0089_'SKIP IF NO_^1_%LDA* N800_^1_%JMP* SL0090_^1SL0089 EQU SL0089(*)_^1_%INA -$F_*UNDEFINED_^1_%SAZ SL0090_'YES, A IS SET_^1_%INA -1_+VARIABLE_^1_%SAN SL0091_'ERROR_^1_%LDA* N1000_^1SL0090 ADD- IOBFLG,I_$HDR2 PROCESSING COMPLETE_^1_%STA- IOBFLG,I_^1_%JMP* NORMAL_^1EO1_"EQU EO1(*)_^1_%LDQ- EXTPTR,I_^1_%INQ FILEID_^1_%QLS 1_,CONVERT TO CHARACTER ADDRESS_^1_%STQ* AFLD1_^1_%LD€€Q* RECADR_^1_%INQ HFILID_^1_%ENA 17_^1_%RTJ CLC2_)COMPARE DATA SET NAME AND_^1AFLD1 NUM 0_^1_%SAZ AOK_^1SL0091 EQU SL0091(*)_^1_%ENA S8_^1_%JMP* RLABER_^1AOK_"EQU AOK(*)_^1_%RTJ* STBLKC_'SET THE BLOCK COUNT_^1NORMAL EQU NORMAL(*)_#COMMON PROCESSING_^1_%LDQ* SAVIT_^1_%STQ- $FF_^1_%RTJ* RLLAB_^1_%LDQ- EXTPTR,I_^1_%LDA- HDRTP,Q_%PLACE HEADER TYPE IN A_^1_%JMP* (RDHDR)_^1_%SP€€C 2_^1RLEN_!NUM $0_^1RECADR NUM $0_^1XSCCB ADC SCCBM1_^1XLABM1 ADC LABDMB-1_^1_%SPC 2_^1JMPTAB ADC NORMAL-1_^1_%ADC NORMAL-1_^1_%ADC HDR1-1_^1_%ADC HDR2-1_^1_%ADC EO1-1_^1_%ADC NORMAL-1_^1_%ADC EO1-1_^1_%ADC NORMAL-1_^1_%SPC 2_^1SAVE_!NOP $0_+SAVE I, AND LOAD IT WITH_^1_%LDQ- $FF_*SCCB-1_^1_%STQ* SAVIT_^1_%LDQ* XSCCB_^1_%STQ- $FF_^1_%JMP* (SAVE)_^1SAVIT NUM $0_^1€€_%SPC 2_^1S9_#EQU S9(73)_^1CONVTX NOP $0_+CONVERT A FIELD TO NUMERIC_^1_%RTJ* CONVRT_^1_%LDA- SCPHL,I_^1_%SAZ NUM_^1_%ENA S9_^1RLABER EQU RLABER(*)_^1_%RTJ LABERR_'NOT NUMERIC_^1NUM_"EQU NUM(*)_^1_%LDA- SCNUM,I_^1_%LDQ* SAVIT_^1_%LDQ- EXTPTR,Q_^1_%JMP* (CONVTX)_^1_%SPC 2_^1CONVRT NOP $0_+CONVERT ASCII INPUT FIELD_^1_%STQ* RLABEL_'TO DECIMAL NUMBER_^1_%AAQ Q_^1_%ENA $2C_€€^1_%RTJ SBYTE_^1_%LDQ* RLABEL_'GET ADDRESS_^1_%STQ- SNCA,I_^1_%RTJ SCAN_^1_%LDA- SCNUM,I_^1_%JMP* (CONVRT)_^1_%SPC 4_^1STBLKC NOP 0_,SUBROUTINE FOR SETTING FBLK_^1_%RTJ* SAVE_^1_%LDQ* RECADR_'GET THE CHARACTER ADDRESS OF THE RECORD_^1_%INQ HBLCT+1_%SET TO BLOCK COUNT_^1_%ENA 5_^1_%RTJ* CONVTX_^1_%STA- FBLK,Q_^1_%JMP* (STBLKC)_$RETURN_^1_%SPC 2_^1N800_!NUM $800_^1N1000 NUM €€ $1000_^1N2000 NUM $2000_^1XLBYTE ADC LBYTE_^1_%SPC 4_^1***********************************************_^1*_L*_^1* RLABEL - READ A TAPE LABEL AND DETERMINE_!*_^1*_*THE TYPE OF LABEL IT IS._)*_^1*_"CALL - RTJ RLABEL_7*_^1*_)(I)=MAIN DMB ADDR.-1_.*_^1*_"RETURN - (A)= -0 , NO PROPER LABEL_%*_^1*_/= 0 , TAPE MARK_,*_^1*_/= 1 , VOL1_2*_^1*_/= 2 , HDR1_2*_^1*_/= 3 , HDR2_2*_^1*_/= €€4 , EOV1_2*_^1*_/= 5 , EOV2_0*_^1*_/= 6 , EOF1_2*_^1*_/= 7 , EOF2_2*_^1*_L*_^1***********************************************_^1_%SPC 4_^1TYPES EQU TYPES(7)_^1RLABEL NOP $0_^1_%LDQ* XLABM1_^1_%ENA $20_^1_%AND- IOBFLG,I_^1_%ADD =N$C040_%CHECH FOR CONVERSION_^1_%STA- IOBFLG,Q_^1_%LDA =XENDFIL_^1_%RTJ* SVENT_(SAVE CONSTANS TO MAKE REENTRERABLE_^1_%RTJ* ALCLAB_'ALLOCATE BUFFER F€€OR LABEL_^1_%LDQ* XLABM1_^1_%RTJ* (XGETLC)_$CALL GET LOCATE_^1_%LDA- LRECL,Q_^1_%INA -80_^1_%SAZ 1_,LENTGHT MUST BE EXACTLY 80 CHARACTERS_^1_%JMP* ERRXX_(READ TOO LONG FOR A LABEL_^1_%ENA TYPES_(SEARCH TABLE FOR LABEL TYPE_^1_%STA* TYPCNT_^1_%LDA* XTAB_^1_%ALS 1_^1_%STA* AFEELD_^1_%LDQ- ARECL,Q_^1_%STQ* RLLAB_^1COMPAR ENA 4_^1_%LDQ* RLLAB_^1_%QLS 1_^1_%RTJ* CLC2_^1AFEELD ADC €€ $0_^1_%SAZ GOTIT_^1_%LDA* TYPCNT_^1_%INA -1_^1_%SAZ ERRXX_^1_%STA* TYPCNT_^1_%LDA* AFEELD_^1_%INA 4_^1_%STA* AFEELD_^1_%JMP* COMPAR_^1GOTIT EQU GOTIT(*)_^1_%ENA TYPES+1_%COMPUTE INDEX_^1_%SUB* TYPCNT_^1_%JMP* RESTOR_^1ERRXX EQU ERRXX(*)_^1_%SET A_^1RESTOR EQU RESTOR(*)_^1_%RTJ* RSEXT_(RESET CONTSTANS_^1_%JMP* (RLABEL)_^1ENDFIL EQU ENDFIL(*)_^1_%CLR A_^1_%JMP* RESTOR_^€€1XTAB_!ADC LABTAB_^1TYPCNT NUM $0_^1XGETFF ADC GETFF_^1XGETLC ADC GETLOC_^1LABTAB ALF 2,VOL1_^1_%ALF 2,HDR1_^1_%ALF 2,HDR2_^1_%ALF 2,EOV1_^1_%ALF 2,EOV2_^1_%ALF 2,EOF1_^1_%ALF 2,EOF2_^1_%SPC 4_^1************************************_^1*_!RLLAB - RELEASE LABEL ROUTINE *_^1************************************_^1_%SPC 2_^1RLLAB NOP 0_^1_%LDQ- EXTPTR,I_$GET EXTENT POINTE€€R_^1_%SQZ RLLAB2_'NOTHING TO RELEASE_^1_%LDA- LABADR,Q_$GET BUFFER ADDRESS OF LABEL_^1_%RTJ* RLALL_(CALL RELEASE ROUTINE_^1_%LDQ- EXTPTR,I_$RESET EXTENT POINTER_^1_%CLR A_^1_%STA- LABADR,Q_$CLEAR ADDRESS POINTER_^1RLLAB2 EQU RLLAB2(*)_^1_%JMP* (RLLAB)_^1_%SPC 2_^1RLALL NOP 0_^1_%SAZ RLNO_)LEGAL RELEASE?_^1_%RTJ RELBUF_'YES_^1RLNO_!EQU RLNO(*)_^1_%JMP* (RLALL)_^1_%SPC 2_^1€€***************************_^1* ALLOCATE LABEL BUFFER_!*_^1***************************_^1_%SPC 2_^1ALCLAB NOP 0_^1_%RTJ* (GTBFL)_%GET A BUFFER_^1_%LDQ- EXTPTR,I_$ADDRESS OF EXTENT IN Q_^1_%LDA- ABUFFP,I_$ADDRESS OF BUFFER_^1_%STA- LABADR,Q_$SET LABEL ADDRESS_^1_%JMP* (ALCLAB)_$RETURN_^1_%SPC 4_^1*********************************************_^1*_J*_^1* CLC2 - COMPARE LOGICAL CHA€€RACTERS_'*_^1*_(FOR EQUALITY._4*_^1*_"CALL - RTJ CLC2_7*_^1*_#(P+1) = CHARACTER ADDRESS OF A FIELD *_^1*_#(Q) = CHARACTER ADDRESS OF B FIELD_"*_^1*_#(A) = LENGTH OF FIELDS_/*_^1* ON RETURN (A)=0 - FLASE , (A)=-0 - TRUE *_^1*********************************************_^1_%SPC 4_^1_%SPC 2_^1CLC2_!NOP $0_^1_%SAN NOTZ_^1_%JMP* TEXIT_(IF ZERO LENGTH FIELDS_^1NOTZ_!EQU NOTZ(*)_^1€€_%RTJ SETCNT_'SET LENGTH COUNTER_^1CNTR_!NUM $0_^1_%LDA* (CLC2)_'GET ADDRESS OF A FIELD_^1_%STA* AADR_^1_%STQ* BADR_^1_%RAO* CLC2_)INCREMENT RETURN ADDRESS_^1NXTCHR EQU NXTCHR(*)_^1_%RTJ* (XLBYT2)_$GET B FIELD CHARACTER_^1BADR_!ADC $0_^1_%STA* BCHAR_(SAVE B FIELD CHARACTER_^1_%RTJ* (XLBYT2)_$GET A FIELD CHARACTER_^1AADR_!ADC $0_^1_%SUB* BCHAR_(TEST IF CHARS. SAME_^1_%SAZ MATC€€H_(YES_^1_%JMP* (CLC2)_'RETURN_^1MATCH EQU MATCH(*)_^1_%RAO* CNTR_)SEE IF LAST CHAR. POS._^1_%SOV TEXIT_(YES_^1_%JMP* NXTCHR_'COMPARE NEXT CHARS._^1TEXIT EQU TEXIT(*)_^1_%JMP* (CLC2)_^1XLBYT2 ADC LBYTE2_^1_%SPC 2_^1BCHAR NUM $0_+TEMP. STORE FOR B FIELD CHAR._^1_%SPC 4_^1SVENT NOP 0_^1_%LDQ* LABDM1_^1_%STA- EOFADR,Q_^1_%LDA* (XGETFF)_^1_%STA- FORD,Q_'SAVE IN LABEL DMB_^1€€_%LDA* (XGETLC)_^1_%STA- RECORD,Q_^1_%LDA* (XREAD)_^1_%STA- LBUFFP,Q_^1_%LDA* (XPUTL)_^1_%STA- ERREXT,Q_^1_%LDA* (XWRITE)_^1_%STA- ASLCT1,Q_^1_%LDA- LOG1,I_^1_%STA- LOG1,Q_^1_%LDA- EXTPTR,I_^1_%STA- EXTPTR,Q_$SAVE EXTENT LIST IN LABEL DMB_^1_%STQ- $FF_*SET IREG TO LABEL DMB_^1_%TRA Q_,SET EXTENT POINTER IN Q_^1_%JMP* (SVENT)_^1XREAD ADC READ_^1_%SPC 2_^1RSEXT NOP 0_,RESET FRO€€ EXIT_^1_%LDQ* LABDM1_^1_%STQ- $FF_^1_%LDQ- FORD,I_^1_%STQ* (XGETFF)_^1_%LDQ- RECORD,I_^1_%STQ* (XGETLC)_^1_%LDQ- LBUFFP,I_^1_%STQ* (XREAD)_^1_%LDQ- ASLCT1,I_^1_%STQ* (XWRITE)_^1_%LDQ- ERREXT,I_^1_%STQ* (XPUTL)_^1_%LDQ- EXTPTR,I_^1_%LDQ- EXTDMB,Q_$GET POINTER TO DMB_^1_%STQ- $FF_^1_%LDQ- EXTPTR,I_^1_%JMP* (RSEXT)_^1GTBFL ADC INITBF_^1_%SPC 4_^1*********************************_^€€1*_>*_^1* WRHDR - WRITE TAPE LABELS_"*_^1*_!CALL - RTJ WRHDR_+*_^1*_)(I)= DMB-1_**_^1*_)(A)= 0,HDR1 AND HDR2 *_^1*_,= 1,EOF1 AND EOF2 *_^1*_.2,EOV1 AND EOV2 *_^1*_!RETURN - (I)= DMB-1_(*_^1*_+(Q)= DMB EXTENTION *_^1*_>*_^1*********************************_^1_%SPC 4_^1WRHDR NOP $0_^1_%STA* SAVTP_(SAVE TYPE CODE_^1_%LDQ- EXTPTR,I_$GET EXTENTION ADDR._^1_%ALS 2_,GET INDEX INTO AL€€F TABLE_^1_%INA 2_^1_%ADD* XTAB_)ADD ADDR. OF ALF TABLE_^1_%STA- LABID,Q_%SET UP DATA LIST IN THE_^1_%INA 2_,EXTENDED DMB_^1_%STA- HDRTP,Q_^1_%LDA* SAVTP_^1_%SAN 1_^1_%JMP* WHDR_)HEADER LABELS_^1_%JMP* WEO_*TRAILER LABELS_^1RETN_!EQU RETN(*)_^1_%ENA LABID_(SET UP CALLING SEQUENCE_^1_%ADD- EXTPTR,I_$FOR PRINT_^1_%STA* DATWRH_^1_%LDQ* LABDM1_'CHECK FOR CONVER SION_^1_%ENA $20_^€€1_%AND- IOBFLG,I_^1_%ADD =N$C040_^1_%STA- IOBFLG,Q_^1_%RTJ* SVENT_^1_%RTJ* ALCLAB_'ALLOCATE THE LABEL BUFFER_^1_%RTJ PRINT_^1_%ADC FORWRH_^1DATWRH ADC $0_^1LABDM1 ADC LABDMB-1_^1_%RTJ* RSEXT_^1_%RTJ* RLLAB_^1_%JMP* (WRHDR)_%RETURN_^1WHDR_!LDA- ISECTN,Q_$SET UP DATA LIST_^1_%STA- FSECTN,Q_^1_%LDA- ISEQN,Q_^1_%STA- FSEQN,Q_^1_%CLR A_^1_%STA- FBLK,Q_^1_%JMP* RETN_^1WEO_"LDA- BLK€€CNT,I_$SET UP DATALIST_^1_%STA- FBLK,Q_^1_%JMP* RETN_^1SAVTP NUM $0_^1XPUTL ADC PUTLOC_^1XWRITE ADC WRITE_^1_%SPC 4_^1_%SPC 4_^1****************************************_^1*_E*_^1*_!EOFLAB PROCESS EOF AND EOV LABELS *_^1*_$CALLED BY READ_1*_^1*_E*_^1****************************************_^1_%SPC 4_^1EOFSL NOP 0_,ENTRY TO END OF FILE PROCESSING_^1_%RTJ RDHDR_(READ HEADE€€R 1_^1_%SAN NFM001_^1EOFERR EQU EOFERR(*)_^1_%ENA S009_^1_%JMP* SERRX1_'ISSUE AN ERROR_^1NFM001 EQU NFM001(*)_^1_%LDA- BLKCNT,I_$BLK COUNT MATCH_^1_%SUB- FBLK,Q_^1_%SAZ BLKOK_(YES_^1_%JMP* EOFERR_^1BLKOK EQU BLKOK(*)_^1_%STA- BLKCNT,I_$CLEAR THE BLOCK COUNT_^1_%LDA- HDRTP,Q_^1_%INA -6_+CHECK TYPE_^1_%SAZ EOFLB1_'EOF TYPE_^1_%INA 2_^1_%SAZ EOVLAB_'EQU TYPE_^1_%JMP* EOFERR€€_^1EOVLAB EQU EOVLAB(*)_^1_%RTJ AVSEOV_'SEQUENCE TO NEXT VOLUME_^1_%LDQ* XREAD_(RE-ENTER READ TO CONTINUE PROCESSSING_^1_%JMP- 1,Q_^1EOFLB1 EQU EOFLB1(*)_^1_%ENA SFILEM_'SKIP OTHER EOF LABELS_^1_%RTJ* (MOTN2)_%CALL MOTION PROCESSOR_^1_%LDQ- EXTPTR,I_$GET EXTENT POINTER_^1_%RAO- ISEQN,Q_%INCREMENT FILE NUMBER_^1_%RTJ* (IHD12)_%READ NEXT SET OF HEADERS_^1_%SAM EOFFIN_^1_%SAZ EO€€FLB2_^1_%JMP* EOFERR_^1EOFLB2 EQU EOFLB2(*)_^1_%LDA- ABUFFP,I_$RELEASE BUFFER FOR LABEL_^1_%RTJ* (IRLALL)_$RESET NEW BUFFERS_^1_%RTJ* (GTBFL)_%GET THE NEW BUFFERS_^1_%JMP* (EOFSL)_^1EOFFIN EQU EOFFIN(*)_^1_%ENA SFILEB_^1_%RTJ* (MOTN2)_^1_%JMP* (EOFSL)_^1_%SPC 4_^1****************************************_^1*_E*_^1*_!DATE ROUTINES_4*_^1*_!SDATE - SET SYSTEM DATE_+*_^1*_!EDATE - S€€ET EXPIRATION DATE_'*_^1****************************************_^1_%SPC 2_^1_%ENT SDATE,EDATE,SYSDAT,EXPDTE_^1_%SPC 2_^1SDATE NOP 0_,SET SYSTEM DATE_^1_%LDQ* SYSDAT_^1_%RTJ* DATE_^1_%JMP* (SDATE)_^1SDTE_!ALF 3, 99999_^1EDTE_!ALF 3, 99999_^1_%SPC 2_^1EDATE NOP 0_,SET CREATE DATE_^1_%LDQ* EXPDTE_^1_%RTJ* DATE_^1_%JMP* (EDATE)_^1_%SPC 2_^1SYSDAT ADC SDTE_^1EXPDTE ADC EDT€€E_^1_%SPC 4_^1DATE_!NOP 0_,OBTAIN DATE FROM SCCB_^1_%QLS 1_^1_%INQ 1_^1_%LDA- SCFLG,I_^1_%SAN DTERR_(NOT NUMERIC_^1_%LDA- EOS,I_(CHECK LENGTH_^1_%INA -12_^1_%SAN DTERR_(INVALID LENGTH_^1_%ENA 5_^1_%STQ* TO_+MOVE DATE_^1_%LDQ- SCPHR,I_^1_%INQ 6_,BYPASS INITIAL CHARS_^1_%RTJ MOVE_^1TO_#NUM 0_^1_%JMP* (DATE)_'RETURN_^1DTERR EQU DTERR(*)_^1_%ENA S012_^1SERRX1 EQU SERRX1(€€*)_^1_%RTJ SYSERR_^1_%SPC 4_^1****************************************_^1*_!LABDTE - VERIFY LABEL DATE_'*_^1****************************************_^1LABDTE NOP 0_,COMPUTE ADC OF EXPIRATION DATE_^1_%INQ FEXDTE_'COMPUTE ADC OF EXDAT_^1_%LDA* SYSDAT_'ADDRESS OF CURRENT DATE_^1_%LLS 1_,CONVERT BOTH DATE ADDRESSES TO CHARACTER_^1_%STA* AFLD_^1_%ENA 6_^1_%RTJ* (ICLC2)_^1AFLD_!NUM€€ 0_^1_%SAP USE_^1_%RTJ* (ISVENT)_^1_%RTJ* (IWTOR)_^1_%ADC EXPMSG_^1_%LDQ- SCPHR,I_^1_%SAM NUSE_^1_%RTJ LBYTE_(GET THE RESPONSE CHARACTER_^1_%INA -$55_)CHECK FOR 'U'_^1_%SAZ NUSE+1_^1NUSE_!SET A_^1_%RTJ* (IRSEXT)_^1USE_"JMP* (LABDTE)_^1_%SPC 4_^1ISVENT ADC SVENT_^1IRSEXT ADC RSEXT_^1ICLC2 ADC CLC2_^1IHD12 ADC RDHD12_^1_%SPC 2_^1***************************************€€**_^1*_!RDVOL1 - READS VOLUME HEADER AND_!*_^1*_,VERIFIES IT. IF NOT VOL1 *_^1*_+IT REQUESTS A NEW VOLUME. *_^1*****************************************_^1_%SPC 2_^1RDVOL1 NOP 0_^1_%RTJ RLABEL_'GET A LABEL_^1_%INA -1_^1_%SAZ IVOL1_(IF VOL1 PRINT VOLSER_^1_%ENA UNLOAD_'OTHERWISE UNLOAD AND REQUEST NEXT VOL_^1_%RTJ* (MOTN2)_^1_%RTJ* (ISVENT)_$SAVE REENTER PARMS_^1_%RTJ* (IWT€€OR)_^1_%ADC INVMSG_'ASK FOR NEXT VOLUME_^1_%RTJ* (IRSEXT)_$RESET PARMS_^1_%RTJ* (IRLLAB)_$RELEASE LABEL BUFFER_^1_%JMP* RDVOL1+1_$TRY AGAIN_^1IVOL1 EQU IVOL1(*)_^1_%RTJ* (ISVENT)_^1_%LDA- LABADR,Q_$GET DATA POINTER_^1_%INA 2_^1_%RTJ FMTMSG_^1_%ADC FMT2_^1_%RTJ* (IRSEXT)_^1_%RTJ* (IRLLAB)_$RELEASE LABEL BUFFER_^1_%JMP* (RDVOL1)_$RETURN_^1IRLALL ADC RLALL_^1IRLLAB ADC RLLAB_^€€1_%SPC 4_^1**********************************_^1*_!CLSLAB - WRITE LABEL EOF_#*_^1**********************************_^1_%SPC 2_^1CLSLAB NOP 0_^1_%ENA 2_,CODE TO WRITE EOF1 AND EOF2_^1_%RTJ* (IWRHDR)_$WRTITE TRAILING LABELS_^1_%RAO- ISEQN,Q_%UPEDATE FILE NUMBER_^1_%LDA =N$2602_%FILE MARK FILE MARK BACK ONE FILE_^1_%RTJ* (MOTN2)_^1_%JMP* (CLSLAB)_$EXIT_^1_%SPC 2_^1IWTOR ADC WT€€OR_^1MOTN2 ADC MOTION_^1_%SPC 4_^1**************************************_^1*_!LABERR - RELEASES ASSOCIATED_#*_^1*_+BUFFERS AND EXTENTS IF *_^1*_+AN UNRECOVERABLE ERROR *_^1*_+OCCURS DURING LABEL OPEN*_^1**************************************_^1_%SPC 2_^1LABERR NOP 0_^1_%STA* LABERR_'SAVE ERROR CODE_^1_%RTJ* RELLAB_'RELEASE LABEL BUFFER AND EXTENT_^1_%LDA* LABERR_'RESET ERROR€€ CODE_^1_%JMP* SERRX1_'EXIT TO SYSTEM ERROR ROUTINE_^1*_!NO RETURN SINCE ALL ERRORS ARE SERIOUS OR CRITICAL_^1_%SPC 3_^1*************************************_^1* RELLAB - RELEASE LABEL AREAS_#*_^1*************************************_^1_%SPC 2_^1RELLAB NOP 0_^1_%RTJ* (IRLLAB)_$RELEASE ANY LABEL BUFFER_^1_%TRQ A_,EXTENT POINTER TO A_^1_%INA 1_,RECOMPUTE RELEASE ADDRESS_^1_%RTJ€€* (IRLALL)_$RELEASE IT_^1_%CLR A_^1_%STA- EXTPTR,I_$CLEAR EXTENT POINTER_^1_%JMP* (RELLAB)_^1_%SPC 4_^1*******************************************_^1*_H*_^1* AVSEOT - CONTINUE OUTPUT TO NEXT VOL. *_^1*_$CALL - RTJ AVSEOT_^1*_-(I)=MAIN DMB-1_1*_^1*_"RETURN - (I)=MAIN DMB-1_2*_^1*_R*_^1********************************************_^1_%SPC 2_^1IWRHDR ADC WRHDR_^1AVSEOT NOP $0_^1€€_%ENA WFILEM_^1_%RTJ* (MOTN2)_^1_%ENA 1_^1_%RTJ* (IWRHDR)_$WRITE EOV TRAILERS_^1_%LDA =N$2402_^1_%RTJ* (MOTN2)_^1_%RTJ* NEWVOL_^1_%RTJ* RDVOL1_^1_%RTJ* NEWEXT_^1_%RTJ CHKHDR_^1_%RTJ* EXPEXT_^1_%RAO- ISECTN,Q_^1_%CLR A_^1_%STA- BLKCNT,I_$CLEAR THE DMB BLOCK COUNT_^1_%RTJ WHD12_^1_%JMP* (AVSEOT)_^1EXTSVR NUM $0_^1_%SPC 2_^1NEWVOL NOP $0_^1_%RTJ* (ISVENT)_^1_%RTJ* (IWTOR)_^1_€€%ADC NXTVOL_^1_%RTJ* (IRSEXT)_^1_%JMP* (NEWVOL)_^1_%SPC 4_^1*****************************_^1* AVSEOV - AUTOMATIC VOLUME *_^1*_)SEQUENCING ON_"*_^1*_)INPUT_+*_^1*****************************_^1_%SPC 2_^1AVSEOV NOP 0_,ENR_^1_%ENA UNLOAD_^1_%RTJ* (MOTN2)_%UNLOAD VOLUME_^1_%LDQ- EXTPTR,I_^1_%RAO- ISECTN,Q_^1_%RAO- FSECTN,Q_^1_%RTJ* NEWVOL_'ASK FOR NEXT VOLUME_^1AVS1_!EQU AVS1(*)_€€^1_%RTJ* RDVOL1_^1_%RTJ* NEWEXT_^1_%LDQ* EXTSVR_'GET OLD EXTENT_^1_%LDA- ISECTN,Q_^1_%LDQ- EXTPTR,I_^1_%STA- ISECTN,Q_^1_%LDQ* EXTSVR_^1_%LDA- ISEQN,Q_^1_%LDQ- EXTPTR,I_^1_%STA- ISEQN,Q_^1_%RTJ* (IHD12)_%READ NEW HEARDERS_^1_%STA* NEWEXT_'SAVE RETURN CODE_^1_%RTJ* EXPEXT_^1_%INQ FILEID_^1_%INA FILEID_^1_%LLS 1_^1_%STA* AFLD21_^1_%LDA* NEWEXT_'SEE IF HEADER LEGAL_^1_%SAN AVS2_)N€€O IT IS NOT_^1_%ENA 34_^1_%RTJ* (ICLC2)_^1AFLD21 NUM $0_^1_%SAN AVS2_^1_%JMP* (AVSEOV)_^1AVS2_!EQU AVS2(*)_^1_%JMP* AVS1_)NOT CORRECT VOLUME_^1_%SPC 2_^1EXPEXT NOP 0_^1_%LDA- EXTPTR,I_^1_%INA 1_^1_%RTJ* (IRLALL)_^1_%LDA- EXTPTR,I_^1_%LDQ* EXTSVR_^1_%STQ- EXTPTR,I_^1_%JMP* (EXPEXT)_^1_%SPC 2_^1NEWEXT NOP 0_^1_%LDA- EXTPTR,I_^1_%STA* EXTSVR_^1_%CLR A_^1_%STA- EXTPTR,I_^1_%R€€TJ GETEXT_^1_%JMP* (NEWEXT)_^1_%SPC 4_^1NXTVOL ALF 13,22C*MOUNT, O, NEXT VOLUME;_^1_%SPC 3_^1FMT2_!ALF 7,9CVOLSER = 6A;_^1INVMSG ALF 13,22C*INCORRECT VOL MOUNT: ;_^1EXPMSG ALF 12,20CVOL NOT EXPIRED USE:;_^1FMT_"ALF 9,%.A%.(1X)%6A%%6A%*_^1FORWRH ALF 18,%4A%17A6X4D4D6C00010012A1X1C05D20X/_^1_%ALF 11,%4A%1A5D5D35X2C0028X;_^1DSNMSG ALF 10,15C*DATA SET NAME:;_^1_%SPC 2_^1LAB€TDMB NUM $C040_(IOBLFG_^1_%BZS XXX(6)_^1_%NUM 82,82_^1_%BZS YYY(13)_^1_%END_]_^__TPRCMIUP CSY/ U17 P€1_%NAM RCMIUP_'DECK-ID U17 MAG TAPE UTILITY_$SUMMARY-106_^1*_$SETS UP COMMENT DEVICE AS SOURCE OF MTUP CONTROL STATEMENTS_^1*_$CYBER 18 / 1700 COMPUTER SYSTEMS_^1*_$SMALL SYSTEMS DIVISION, LA JOLLA, CALIFORNIA_^1*_$COPYRIGHT CONTROL DATA CORPORATION 1976_^1*_]_^1*_'THIS PROGRAM SETS IUP TO POINT TO THE COMMENT DEVICE TO_^1*_$PICKUP CONTROL PARAMETERS FOR MTUP._^1*_]_^1_%ENT IUP_^€L1_%EQU IUP($FC)_$SET TO COMMNT DEVICE FOR CONTROL STATEMENTS_^1_%END_]_^__ LPALCBUF CSY/ U18 P€1_%NAM ALCBUF_'DECK-ID U18 MAG TAPE UTILITY_$SUMMARY-106_^1*_$ASSIGNS SPACE FOR I/O BUFFERS - MUST BE LAST PROG. LOADED_^1*_$CYBER 18 / 1700 COMPUTER SYSTEMS_^1*_$SMALL SYSTEMS DIVISION, LA JOLLA, CALIFORNIA_^1*_$COPYRIGHT CONTROL DATA CORPORATION 1976_^1*_]_^1***_"PURPOSE_^1*_$-------_^1*_]_^1*****************************************************_^1*_R*_^1*_!ALCBUF - CONTAINS TWO€€ SUBROUTINES TO ALLOCATE_!*_^1*_+AND RELEASE CORE FROM THE END OF THIS *_^1*_+SEGMENT TO THE HIGHEST UNUSED AREA OF *_^1*_+CORE/_A*_^1*_R*_^1*_!CALLING SEQUENCES:_=*_^1*_"GETBUF - (A) = NUMBER OF WORDS REQUIRED_'*_^1*_,RTJ GETBUF_:*_^1*_,(Q) = ADDRESS OF FIRST WORD IF_'*_^1*_,(A) = POSITIVE. IF (A) = NEGATIVE_"*_^1*_2THEN THE REQUEST COULD NOT BE_!*_^1*_2FULFILLED_6*_^1*_R*_^1*€€_"RELBUF - (A) = THE ADDRESS OF THE AREA OBTAINED*_^1*_2BY A GETBUF CALL. NOTE - THIS *_^1*_2MUST BE THE EXACT SAME ADDRESS *_^1*_2RETURNED IN Q BY A RJT GETBUF. *_^1*_,RTJ RELBUF_:*_^1*_R*_^1*_!USE OF ALCBUF:_A*_^1*_"ALCBUF MUST BE THE LAST MODULE LOADED IF IT IS *_^1*_"TO FUNCTION PROPERLY. NOTE THAT A REQUEST FOR *_^1*_"SPACE MAY NOT BE SATISFIED AND THAT TO RELEASE *_^1*_€€"CORE IS A MUST IF THE MODULE IS TO FUNCTION_"*_^1*_"EFFICIETLY._C*_^1*_R*_^1*****************************************************_^1_%SPC 4_^1*_]_^1****_!*****************************************************************_^1*_$ENTRY POINTS_^1****_!*****************************************************************_^1_%ENT RELBUF_^1_%ENT GETBUF_^1****_!******************************€€***********************************_^1*_$EXTERNALS_^1****_!*****************************************************************_^1_%EXT SYSERR_^1****_!*****************************************************************_^1*_$EQUIVALENCES_^1****_!*****************************************************************_^1****_]_^1C0_#EQU C0(32)_^1RELBUF NOP 0_,ENTRY TO RELEASE BUFFER_^1_%INA €€-4_+REDUCE ADDRESS TO OBTAIN PROPER POINTERS_^1REL000 EQU REL000(*)_#REENTRY FOR COMBINING FREE AREAS_^1_%STA* REQLN_(SAVE THE POINTER TO THE BLOCK TO RELEASE_^1_%TRA Q_^1_%LDQ- ASON,Q_'GET ADDRESS OF SON IN Q_^1_%SUB- AFATHR,Q_$CHECK IF PROPER FATHER - MUST EQUAL (A)_^1_%SAZ REL050_^1_%ENA C0_^1_%RTJ SYSERR_^1REL050 EQU REL050(*)_^1_%LDA- ASELF,Q_%IS SON FREE?_^1_%SAP REL06€€0_'YES CONCATONATE FREE AREAS_^1_%JMP* REL100_'NO SON IS BUSY IGNORE_^1REL060 EQU REL060(*)_#COMBINE AREAS_^1_%LDA- ASON,Q_'GET SON'S SON_^1_%SAZ REL100_'DOES SON HAVE A SON_^1_%LDQ* REQLN_(YES SO GET RID OF SON AND GIVE HIM A NEW FATHE_^1_%STA- ASON,Q_^1_%EAQ A_^1_%EAQ Q_^1_%EAQ A_,SWAP A AND Q_^1_%STA- AFATHR,Q_$SON ADOPTED AND OLD SON DESTROYED_^1* FORWARD CHAIN IS NOW RESE€€T_^1_%SPC 4_^1REL100 EQU REL100(*)_^1_%LDQ* REQLN_(CHECK BACK CHAIN FOR PREVIOUS FREE AREA_^1_%STQ- ASELF,Q_%CLEAR ACTIVE FLAG AS REQUESTED_^1_%RAO- ASELF,Q_%SET LOCATION TO ITSELF_^1_%LDQ- AFATHR,Q_$CHECK FATHER_^1_%SQZ REL110_'SKIP IF NO FATHER - IE START OF TREE_^1_%LDA- ASELF,Q_%IS FATHER FREE_^1_%SAM REL110_'NO CORE IS NOW RELEASED AND COMBINED INTO MAJO_^1_%INA -1_+SET L€€OCATION VALUE TO ITSELF -1_^1_%JMP* REL000_'PROCESS FATHER LIKE SON TO DELETE SON_^1REL110 EQU REL110(*)_#FINISHED_^1_%JMP* (RELBUF)_^1************************************_^1*_!DATA AREAS AND CONSTANTS FOR_!*_^1*_!RELBUF AND GETBUF_-*_^1************************************_^1_%SPC 4_^1CHAINA NUM 0_,POINTER TO FIRST AVAILABLE LOCATION_^1CHAINB NUM 0_,POINTER SET ON INITIALIZATIO€€N TO CHAINA+INDBIT_^1CHAIN NUM 0_,USED TO LOCATE AN ENTRY_^1REQLN NUM 0_,PARAMETER HOLD WORD FOR RELBUFF AND GETBUF_^1FATHER NUM 0_,POINTER TO FATHER_^1INDBIT NUM $8001_^1_%EQU ZERO($22)_^1_%EQU LPMSK(2)_^1_%SPC 4_^1* EQUATES USED IN ALCBUF_^1_%EQU ASELF(1)_^1_%EQU ASON(ASELF+1)_^1_%EQU AFATHR(ASON+1)_^1**************************************_^1*_!GETBUF ROUTINE_2*_^1**€€************************************_^1GETBUF NOP 0_,ENTRY GETBUF_^1_%INA 3_,RESET WORD COUNT TO INCLUDE POINTER WORDS_^1_%STA* REQLN_(SAVE_^1GET040 EQU GET040(*)_#REENTER HERE AFTER INITIALIZATION_^1_%LDA* CHAINB_'GET POINTER TO FIRST FATHER_^1_%STA* CHAIN_^1_%SAN GET050_'IS THIS THE FIRST REQUEST_^1_%JMP* GETINT_'YES INITIALIZE CORE_^1GET050 EQU GET050(*)_#SEARCH FAMILY TREE€€ FOR UNUSED BLOCK_^1_%LDQ* (CHAIN)_%FIND A FREE BLOCK - ADDRESS - 1 IS IN Q_^1GET051 SQP GET055_'CHECK FOR INDIRECT BIT SET_^1_%TRQ A_^1_%AND- LPMSK+15_$REMOVE INDIRECT BIT_^1_%TRA Q_^1_%LDQ- (ZERO),Q_^1_%JMP* GET051_^1GET055 LDQ- (ZERO),Q_^1_%INQ -1_^1_%LDA- ASON,Q_'FIND END OF BLOCK_^1_%SUB- ASELF,Q_%COMPUTE NUMBER OF WORDS IN BLOCK_^1_%INA 1_^1_%SAM GET070_'IS THERE ANY RO€€OM ?_^1GET060 EQU GET060(*)_#YES THER IS_^1_%SUB* REQLN_(IS BLOCK LARGE ENGOUGH TO FULFILL REQUEST?_^1_%SAP GET080_'SKIP IF YES_^1_%LDA- ASON,Q_'NO RESTART CHIN TO FIND NEXT AVAILABLE BLOCK_^1_%SAZ GET070_'IS THIS THE END OF CORE?_^1_%INA 1_,NO SET NEW CHAIN_^1_%STA* CHAIN_^1_%JMP* GET050_'NOW TRY AGAIN_^1_%SPC 4_^1GET070 EQU GET070(*)_^1_%ENQ 0_,NO MORE SPACE_^1_%ENA -1_+S€€ET A MINUS TO INDICATE REQUEST NOT FULFFILLED_^1_%JMP* (GETBUF)_^1_%SPC 4_^1GET080 EQU GET080(*)_^1_%INA -10_*IF BLOCK LENGTH EXCEEDS REQUEST SIZE BY LESS_^1_%SAP GET090_'THAN 10 WORDS USE ENTIRE BLOCK_^1_%JMP* GET100_^1GET090 EQU GET090(*)_#CREATE AND ADOPTED SON AND RETHREAD ORIGINAL_^1_%LDA- ASON,Q_'SON TO ADOPTED SON (A POINTS TO ORIG SON)_^1_%STQ* FATHER_'SAVE TEMPORTARIL€€Y_^1_%ADQ* REQLN_(ADOPT SON (Q POINTES TO ADOPTED SON -1)_^1_%STQ- ASELF,Q_%RETHREAD ADOPTED SON TO SELF_^1_%RAO- ASELF,Q_^1_%STA- ASON,Q_'RETRHEAD ADOPTED SON TO BE FATHER OF ORIG SON_^1_%EAQ Q_^1_%EAQ A_,SWAP A AND Q_^1_%EAQ Q_^1_%STA- AFATHR,Q_$THREAD SON TO ADOPTED SON_^1* FORWARD CHAIN NOW SET_^1_%LDQ* FATHER_'RESET POINTER TO ORIGINAL_^1_%STA- ASON,Q_'THREAD FATHER TO ADOP€€TED SON_^1_%TRA Q_,Q POINTES TO ADOPTED SON_^1_%LDA* FATHER_^1_%STA- AFATHR,Q_$THREAD ADOPTD SO TO FATHER_^1_%TRA Q_,REST Q TO FATHER_^1GET100 EQU GET100(*)_^1_%LDA- ASON,Q_'THREAD FATHER TO SON AND SET_^1_%ADD* INDBIT_'BLOCK IN USE FLAG (IE SET FOR MULTIPLE INDIREC_^1_%STA- ASELF,Q_%STORAGE NOW ACTIVATED AND ASSIGNED_^1* (Q) = ADDRESS OF BLOCK -4 A = POSITIE_^1_%INQ 4_,COMPUTE€€ USER ADDRESS_^1_%JMP* (GETBUF)_^1GETINT EQU GETINT(*)_#INITIALIZE GETBUF ROUTINE_^1_%LDQ- $ED_*GET ADDRESS OF FIRST BLOCK-1_^1_%STQ* CHAINA_^1_%LDA- $EC_*GET HIGHEST UNPROTECTED LOCATION+1_^1_%INA -4_^1_%STA- ASON,Q_'SET POINTERFROM FIRST TO SON_^1_%TRA Q_,SWAP REGISTERS_^1_%LDA* CHAINA_^1_%STQ- ASELF,Q_%SET LAST BLOCK_^1_%RAO- ASELF,Q_^1_%STA- AFATHR,Q_$SET FATHER THREAD_^1_%E€τNA 0_^1_%STA- ASON,Q_'SET END OF FAMILY TREE_^1_%LDQ* CHAINA_^1_%STA- AFATHR,Q_$SET BEGINNE OF FAMILY TREE_^1_%STQ- ASELF,Q_^1_%RAO- ASELF,Q_^1_%INQ 1_^1_%STQ* CHAINB_'SET CHAIN POINTERS_^1_%JMP* GET040_'INITIALIZATION COMPLETE_^1_%END_]_^__ τPCVASEB CSY/ U19 P€1_%NAM CVASEB_'DECK-ID U19 MAG TAPE UTILITY_$SUMMARY-110_^1*_$CONVERTS ASCII TO EBCDIC AND VICE VERSA_^1*_$MAG TAPE UTILITY PROCESSOR_^1*_$SMALL SYSTEMS DIVISION, LA JOLLA, CALIFORNIA_^1*_$COPYRIGHT CONTROL DATA CORPORATION 1976_^1*_]_^1***_"PURPOSE_^1*_$-------_^1*_]_^1*_$THIS ROUTINE CONVERTS ASCII TO EBCDIC AND VICE VERSA_^1*_$CALLING SEQUENCE-_^1*_$RTJ EBCDIC_^1*_$ADC BUF_*€€BUFFER ADDRESS_^1*_$ADC BUFL_)BUFFER LENGTH_^1*_]_^1*_$BUFL = +LENGTH IF ASCII TO EBCIDC_^1*_$BUFL = -LENGTH IF EBCDIC TO ASCII_^1*_]_^1****_!*****************************************************************_^1*_$ENTRY POINTS_^1****_!*****************************************************************_^1****_!*****************************************************************_^1*_$EXTE€€RNALS_^1****_!*****************************************************************_^1_%ENT CVASEB_^1_%EQU NZERO($12)_^1****_!*****************************************************************_^1*_$EQUIVALENCES_^1****_!*****************************************************************_^1****_]_^1_%EQU ZERO($22)_^1_%EQU LPMSK(2)_^1CVASEB NOP_]_^1_%RTJ* NORML_(ABSOLUTIZE FIRST PARAMETE€€R_^1_%STA* ADDR_^1_%RTJ* NORML_(ABSOLUTIZE SECOND PARAMETER_^1_%STA* ECOUNT_'SAVE ADDRESS OF COUNT_^1_%LDA* (ECOUNT)_^1_%SAM EBCASC_'IF MINUS EBCDIC TO ASCII CONVERSION_^1_%STA* ECOUNT_'SAVE COUNT_^1_%ENA $20_^1_%STA* ADJUST_^1_%JMP* T15C_^1EBCASC TCA A_,GET ACTUAL COUNT_^1_%STA* ECOUNT_'SAVE COUNT_^1_%ENA $3F_^1_%ADD- NZERO+15_^1_%STA* ADJUST_^1T15C_!LDA* ECOUNT_^1_%INA -1_+D€€ECREASE COUNT_^1_%ADD* ADDR_)GET BUFFER ADDRESS_^1_%STA* ADDR_)REAL ADDRESS_^1LOOP_!LDQ* ADDR_)GET CHARACTER UPPER_^1_%LDA- (ZERO),Q_^1_%ARS 8_^1_%RTJ* EXAM_^1_%ALS 8_,SHIFT CHARACTER UPPER_^1_%STA* HOLD_^1_%LDQ* ADDR_^1_%LDA- (ZERO),Q_$GET WORD LOWER_^1_%RTJ* EXAM_^1_%EOR* HOLD_)COMBINE UPPER AND LOWER_^1_%LDQ* ADDR_^1_%STA- (ZERO),Q_$STORE CONVERTED WORD_^1_%LDA* ECOUNT_^1_%INA€€ -1_+DECREASE COUNT_^1_%SAZ EXIT_^1_%STA* ECOUNT_^1_%LDA* ADDR_)ADJUST BUFFER ADDRESS_^1_%INA -1_^1_%STA* ADDR_^1_%JMP* LOOP_^1EXIT_!JMP* (CVASEB)_^1*_]_^1ADDR_!NUM 0_,CURRENT BUFFER ADDRESS_^1ECOUNT NUM 0_,WORDS REMAINING TO BE CONVERTED_^1ADJUST NUM 0_^1HOLD_!NUM 0_,TEMPORARY STORAGE_^1_%SPC 4_^1*_]_^1*_$THIS ROUTINE CHECKS FOR RELATIVE ADDRESSING OF THE_^1*_$PARAMETERS A€€ND ABSOLUTIZES THEM_^1*_]_^1NORML NOP_]_^1_%LDQ* CVASEB_'GET RETURN ADDRESS_^1_%RAO* CVASEB_^1_%LDA- $F6_*NO RELATIVE IN UPPER BANK_^1_%SAM KG65K_^1_%LDA- (ZERO),Q_$A CONTAINS ADDRESS OF PARAMETER_^1_%SAP OUT_*A POSITIVE IMPLIES NOT RELATIVE ADDRESSING_^1_%AAQ A_^1_%AND- LPMSK+15_^1_%JMP* OUT_^1KG65K LDA- (ZERO),Q_^1OUT_"JMP* (NORML)_^1_%EJT_]_^1*_]_^1*_$TABLE FORMAT_^1*_$ASCI€€I - EBCDIC_^1*_]_^1EXAM_!NOP 0_^1_%AND- LPMSK+8_^1_%TRA Q_^1_%LDA* ADJUST_^1_%AND- LPMSK+15_^1_%LLS 16_^1_%TCQ Q_^1_%AAQ A_^1_%SAM EXIV_^1_%LDQ* ADJUST_^1_%SQM EX1_^1_%INA -$60_^1_%SAP EXIV_^1_%INA $60_^1_%JMP* EX1_^1EXIV_!ENA $5F_*INVALID CHARACTER_^1EX1_"TRA Q_^1_%AND- LPMSK+15_^1_%LDA* CNVRTB,Q_^1_%LDQ* ADJUST_^1_%SQP EX4_*EBCDIC_^1_%ARS 8_^1EX4_"AND- LPMSK+8_^1_%J€€MP* (EXAM)_^1_%EJT_]_^1CNVRTB NUM $7F40_((WAS $4040 IN SUP 1.0)_^1_%NUM $205A_^1_%NUM $7F7F_^1_%NUM $7F7B_^1_%NUM $7F5B_^1_%NUM $7F6C_^1_%NUM $7F50_^1_%NUM $7F7D_^1_%NUM $7F4D_^1_%NUM $7F5D_^1_%NUM $7F5C_^1_%NUM $5B4E_^1_%NUM $2E6B_^1_%NUM $7F60_^1_%NUM $284B_^1_%NUM $2B61_^1_%NUM $7FF0_^1_%NUM $26F1_^1_%NUM $7FF2_^1_%NUM $7FF3_^1_%NUM $7FF4_^1_%NUM $7FF5_^1_%€€NUM $7FF6_^1_%NUM $7FF7_^1_%NUM $7FF8_^1_%NUM $7FF9_^1_%NUM $7F7A_^1_%NUM $215E_^1_%NUM $24CE_^1_%NUM $2A7E_^1_%NUM $29EC_^1_%NUM $3B6F_^1_%NUM $5F7C_((WAS $5F3F IN SUP 1.0)_^1_%NUM $2DC1_^1_%NUM $2FC2_^1_%NUM $7FC3_^1_%NUM $7FC4_^1_%NUM $7FC5_^1_%NUM $7FC6_^1_%NUM $7FC7_^1_%NUM $7FC8_^1_%NUM $7FC9_^1_%NUM $7FD1_^1_%NUM $7CD2_^1_%NUM $2CD3_^1_%NUM $25D4_^1_%€€NUM $5ED5_^1_%NUM $7FD6_^1_%NUM $3FD7_^1_%NUM $7FD8_^1_%NUM $7FD9_^1_%NUM $7FE2_^1_%NUM $7FE3_^1_%NUM $7FE4_^1_%NUM $7FE5_^1_%NUM $7FE6_^1_%NUM $7FE7_^1_%NUM $7FE8_^1_%NUM $60E9_^1_%NUM $3A4A_^1_%NUM $23FA_^1_%NUM $40CC_((WAS $7FCC IN SUP 1.0)_^1_%NUM $276D_^1_%NUM $3D5F_^1_%NUM $2279_^1_%NUM $7F81_^1_%NUM $6182_^1_%NUM $6283_^1_%NUM $6384_^1_%NUM $6485_^1_%€€NUM $6586_^1_%NUM $6687_^1_%NUM $6788_^1_%NUM $6889_^1_%NUM $6991_^1_%NUM $7F92_^1_%NUM $7F93_^1_%NUM $7F94_^1_%NUM $7F95_^1_%NUM $7F96_^1_%NUM $7F97_^1_%NUM $7F98_^1_%NUM $6A99_^1_%NUM $6BA2_^1_%NUM $6CA3_^1_%NUM $6DA4_^1_%NUM $6EA5_^1_%NUM $6FA6_^1_%NUM $70A7_^1_%NUM $71A8_^1_%NUM $72A9_^1_%NUM $7FC0_^1_%NUM $7F6A_^1_%NUM $7FD0_^1_%NUM $7FA1_^1_%NUM $7F3€€E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $7E3E_^1_%NUM $733E_^1_%NUM $743E_^1_%NUM $753E_^1_%NUM $763E_^1_%NUM $773E_^1_%NUM $783E_^1_%NUM $793E_^1_%NUM $7A3E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM€€ $7F3E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $7B3E_^1_%NUM $413E_^1_%NUM $423E_^1_%NUM $433E_^1_%NUM $443E_^1_%NUM $453E_^1_%NUM $463E_^1_%NUM $473E_^1_%NUM $483E_^1_%NUM $493E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $5D3E_^1_%NUM $7F3E_^1_%NUM $3C3E_^1_%NUM $7F3E_^1_%NUM $7D3E_^1_%NUM $4A3E_^€€1_%NUM $4B3E_^1_%NUM $4C3E_^1_%NUM $4D3E_^1_%NUM $4E3E_^1_%NUM $4F3E_^1_%NUM $503E_^1_%NUM $513E_^1_%NUM $523E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $533E_^1_%NUM $543E_^1_%NUM $553E_^1_%NUM $563E_^1_%NUM $573E_^1_%NUM $583E_^1_%NUM $593E_^1_%NUM $5A3E_^1_%NUM $7F3E_^1_%NUM $€>7F3E_^1_%NUM $3E3E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $303E_^1_%NUM $313E_^1_%NUM $323E_^1_%NUM $333E_^1_%NUM $343E_^1_%NUM $353E_^1_%NUM $363E_^1_%NUM $373E_^1_%NUM $383E_^1_%NUM $393E_^1_%NUM $5C3E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%NUM $7F3E_^1_%END_]_^__> END/