ASMB,R,L,C * * NAME: COPYL * SOURCE: 92071-18247 * RELOC: 92071-16247 * PGMR: C.H.W.,D.L.M. * * **************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT * * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * * **************************************************************** * * NAM COPYL,0 92071-16247 REV.2041 800612 * * * SUP * EXT EXEC,RMPAR,LOGLU,LIMEM,FSTAT,CNUMD,KCVT * COPYL JSB RMPAR GET "FROM" & "TO" LU'S DEF *+2 DEF LU1 * JSB LOGLU GET TERMINAL LU DEF *+2 DEF DUMMY STA TERLU * LDA LU1 "FROM" LU JSB STATS GET PARAMETERS LDA TYPE STA TYPE1 SAVE DEVICE TYPE LDA DVTPS+6 STA SC.TK # SECTORS/TRACK MPY DVTPS+5 * # OF TRACKS CMA,INA STA TSIZE SAVE NEG TOTAL SECTORS * LDA LU2 JSB STATS GET PARAMETERS FOR "TO" DISC LDA TYPE XOR TYPE1 AND B374C SZA BOTH DISCS OF SAME TYPE? JMP ERR1 NO LDA DVTPS+6 CPA SC.TK SECTORS/TRACK MATCH? RSS YES JMP ERR2 NO, ERROR MPY DVTPS+5 ADA TSIZE CHECK TOTAL # OF SECTORS SSA "TO" SIZE >= "FROM" SIZE? JMP ERR2 NO * JSB LIMEM GET START & SIZE OF DEF *+4 AVAILABLE MEMORY DEF ZERO DEF BUFAD DEF #SECT CLB LDA #SECT DIV .128 COMPUTE MAX SECTORS WHICH'LL FIT SZA,RSS ANY SPACE? JMP ERR4 NO LDB SC.TK NXFIT STB #SECT # OF SECTORS WE'RE CMB,CLE,INB TRYING TO FIT IN CORE ADB 0 LDB #SECT SEZ WILL THIS MANY FIT? JMP FITED YES! SLB,ERB SKIP IF DIVISIBLE BY 2 LDB 0 ELSE USE ALL OF AVAIL MEMORY JMP NXFIT TRY AGAIN * FITED CLA ASL 7 TIMES 128 STB SIZE LENGTH IN WORDS STA TRACK START AT TRACK 0, STA SECTR SECTOR 0 * * SEE IF "TO" DISC LU IS MOUNTED JSB FSTAT GET MOUNTED LU'S DEF *+2 DEF BUFAD,I USE AVAIL. MEMORY * LDB BUFAD NXCK LDA 1,I GET NEXT IN LIST SZA,RSS END OF LIST? JMP NEXT YES, OK SINCE NOT MOUNTED CPA LU2 "TO" LU? JMP ERR5 YES, ERROR ADB .4 JMP NXCK * * NOW MOVE THE DATA NEXT LDA TSIZE SZA,RSS MORE TO DO? JMP DONE NO ADA #SECT SSA LESS THAN A FULL XFER? JMP REMND NO LDB TSIZE CMB,INB # OF SECTORS REMAINING CLA ASL 7 SIZE IN WDS OF LAST XFER STB SIZE REMND STA TSIZE * LDA LU1 "FROM" LU JSB XFER READ FROM DISC DEC 1 * LDA LU2 "TO" LU JSB XFER WRITE TO DISC .2 DEC 2 * CLB LDA SECTR ADA #SECT BUMP TO 1ST SECTOR OF DIV SC.TK NEXT TRANSFER ADA TRACK COMPUTE TRACK STA TRACK STB SECTR & SECTOR JMP NEXT & DO ANOTHER SPC 3 * DONE JSB MSGX PRINT SUCCESSFUL MSG & TERM DEF MSGL * ERR1 JSB MSGX NOT A DISC DEF EMSG1 * ERR2 JSB MSGX DISC MISMATCH DEF EMSG2 * ERR4 JSB MSGX INSUFFICIENT MEMORY DEF EMSG4 * ERR5 JSB MSGX "TO" DISC MOUNTED DEF EMSG5 SPC 3 * * SUBROUTINE TO PRINT MESSAGE & TERMINATE MSGX NOP LDB MSGX,I STB MSPRM+1 STORE ADDR OF LENGTH INB STB MSPRM STORE ADDR OF MSG JSB EXEC WRITE TO TERMINAL LU DEF *+5 DEF .2 DEF TERLU MSPRM DEC 0,0 * JSB EXEC TERMINATE DEF *+2 DEF .6 SPC 3 * * SUBROUTINE TO GET DEVICE PARAMETERS STATS NOP IOR BIT12 SET Z-BIT STA LU * JSB EXEC DO EXEC(13,LU) DEF *+7 DEF .13 DEF LU DEF TYPE DEF DUMMY DEF DVTPS 3 WORD "Z"-BUFFER DEF .7 LDA TYPE AND B340C ISOLATE BITS 13-11 CPA B140C IS IT A DISC? JMP STATS,I YES JMP ERR1 NO,ERROR SPC 3 * * SUBROUTINE TO DO A DISC READ OR WRITE XFER NOP STA LU# SAVE LU IOR .2770 STA LU LDA =D-3 ALLOW THREE RETRIES STA RETRY IN COUNTER * XFER1 JSB EXEC DEF *+7 DEF XFER,I PASSED CODE DEF LU BUFAD NOP AVAIL MEMORY DEF SIZE DEF TRACK DEF SECTR * CPB SIZE XMISSION LOG OK? SLA YES, ERROR FREE? JMP DSCER NO XFER2 ISZ XFER JMP XFER,I RETURN * * DISC ERROR ROUTINE * DSCER JSB RMPAR GET RESULTS DEF *+2 DEF DSTAT LDA DSTAT GET THE ERROR CODE AND =B77 CHECK FOR RETRY CPA =B77 ?? RSS YES JMP DKER1 NO - HARD ERROR ISZ RETRY BUMP COUNTER JMP XFER1 AND TRY AGAIN DKER1 JSB KCVT CONVERT DEF *+2 DEF LU# STA LU# JSB CNUMD CONVERT TRACK DEF *+3 DEF TRACK DEF TRK# JSB CNUMD AND SECTOR DEF *+3 DEF SECTR DEF SECT# JSB CNUMD AND SIZE DEF *+3 DEF SIZE DEF SZE# JSB EXEC AND WRITE TO TERMINAL DEF *+5 DEF .2 DEF TERLU DEF DKERM DEF DKERL JMP XFER2 DKERM ASC 11, DISC ERROR**** LU = LU# BSS 1 ASC 5,, TRACK = TRK# BSS 3 ASC 6,, SECTOR = SECT# BSS 3 ASC 5,, SIZE = SZE# BSS 3 DKERL ABS *-DKERM SPC 3 * * DATA AREA * RETRY NOP TYPE NOP TYPE1 NOP DVTPS DEC 0,0,0,0,0,0,0 TRACK EQU DVTPS SECTR EQU DVTPS+1 #SECT EQU DVTPS+2 SIZE NOP TSIZE NOP SC.TK NOP LU1 DEC 0,0,0,0,0 LU2 EQU LU1+1 LU EQU LU1+2 TERLU EQU LU1+3 DUMMY EQU LU1+4 DSTAT BSS 5 * ZERO DEC 0 .4 DEC 4 .6 DEC 6 .7 DEC 7 .13 DEC 13 .128 DEC 128 .2770 OCT 27700 BIT12 OCT 10000 B140C OCT 14000 B340C OCT 34000 B374C OCT 37400 * MSGL DEC 8 ASC 08, COPYL COMPLETE EMSG1 DEC 16 ASC 16, COPYL ABORTED - WRONG DEV TYPE EMSG2 DEC 15 ASC 15, COPYL ABORTED - SIZE MISMATCH EMSG4 DEC 18 ASC 18, COPYL ABORTED - INSUFFICIENT MEMORY EMSG5 DEC 17 ASC 17, COPYL ABORTED - "TO" DISC MOUNTED * END COPYL