ASMB,R,L,C,F HED BASIC 7970 DEVICE SUBROUTINE 92101-19014 REV. 1805 NAM MTTDR,7 92101-16014 REV. 1805 771220 * * * * ENT MTTRD,MTTRT,MTTPT,MTTFS * * ***************************************************** * * RELOC. TAPE: 92101-16014 * LISTING: 92101-19014 * SOURCE TAPE: 92101-18014 * ******************************************************* * * * *****EXTERNAL SYMBOLS***** * * **UTILITY ROUTINES** * EXT .ENTR,ERROR,EXEC,.STOP * * * * * * * * SUP PRESS LISTING SKP * * **ENTRY FORMATS AND FUNCTIONS** * * MTTRD(IUNIT,FPVAR,NI,IEOF,NT) * MTTRT(IUNIT,FPVAR,NI,IEOF,NT) * IUNIT=MAG TAPE LOGICAL UNIT NUMBER * FPVAR=FIRST VARIABLE OF ARRAY ELEMENT * TO BE TRANSFERRED TO/FROM CORE * NI=NO. OF VARIABLES TO BE TRANSFERRED * IEOF=END OF FILE FLAG RETURNED BY DRIVER * 0=NO END OF FILE * 1=END OF FILE * NT=ACTUAL NO. OF VARIABLES TRANSFERRED * * MTTPT(IUNIT,IF,IR) * IF=FILE SPACING PARAMETERS * +IF=FORWARD IF FILES * -IF=BACKWARD IF FILES * IR=RECORD SPACING PARAMETER * +IR=FORWARD IR RECORDS * -IR=BACKWARD IR RECORDS * * MTTFS(IUNIT,FUNC) * FUNC=TAPE FUNCTION * 0=GAP * 1=END OF FILE AND GAP * 2=REWIND * 3=REWIND/STANDBY * * FPVAR IS A FLOATING POINT PARAMETER, ALL OTHER * PARAMETERS ARE INTEGER. CONVERSION WORDS MUST * BE INCLUDED IN BRANCH TABLE * HED READ AND WRITE FUNCTIONS A-92101-16014-1 REV. A * MTTRT NOP WRITE ENTRY LDB .2 SET ENTRY FLAG STB STAT SAVE TEMPORARILY LDB MTTRT STB MTTRD JMP MTTRD+1 JUMP TO PSEUDO ENTRY SPC 2 UNIT BSS 1 VAR BSS 1 NI BSS 1 EOF BSS 1 NT BSS 1 * MTTRD NOP READ ENTRY JSB .ENTR DEF UNIT LDB STAT GET ENTRY FLAG CPB .2 WRITE? RSS YES. CLB,INB NO,READ STB CMDC SET COMMAND CODE * LDA UNIT,I IOR COMWD STA CONWD LDB CMDC WRITE? SLB JMP MT1 JSB STAT READ STATUS AND .4 YES! SZA WRITE RING? JMP REJ NO! MT1 STA STAT CLEAR ENTRY FLAG LDA NI,I CONVERT NO. OF VARIABLES STA NT,I ALS TO STA NII WORDS LDB VAR STB VARA SET UP READ/WRITE ADDRESS ADB NII ADB M2 STB BFLAG DLD BFLAG,I LOAD LAST VARIABLE DST BFLAG,I ATTEMPT TO RESTORE CLB STB EOF,I ZERO EOF FLAG JSB EXEC MAG TAPE REQUEST DEF *+5 DEF CMDC DEF CONWD VARA DEF * DEF NII STA STAT1 SAVE STATUS BRS CONVERT WORDS TO NO. OF SSB CMB,INB VARIABLES TRANSFERED LDA CMDC IS THIS AREAD OR A WRITE? SLA,RSS JMP MTTRD,I WRITE! SO RETURN STB NT,I SAVE NO. OF VARIABLES TRNSFD LDA STAT1 GET STATUS AND B200 SZA EOF ENCOUNTERED ON A READ? JMP EOFT YES! JMP MTTRD,I RETURN * * EOFT CLA,INA TURN ON EOF FLAG STA EOF,I JMP MTTRD,I RETURN SKP HED POSITION CONTROL A-92101-16014-1 REV. A SPC 2 UNITP NOP FPOS NOP RPOS NOP SPC 1 MTTPT NOP JSB .ENTR DEF UNITP LDB FPOS,I FILE POSITION COUNT SZB,RSS IF ZERO GOTO RECORD SKIP JMP RC1 SSB FORWARD OR BACK? JMP BACKF BACK! CMB,INB LDA B1300 FORWARDSPACE FILE FILE JSB SKIP SKIP FILE RC1 LDB RPOS,I RECORD POSITION COUNT SZB,RSS IF ZERO RETURN JMP MTTPT,I SSB FORWARD OR BACK? JMP BACKR BACK! CMB,INB LDA B300 FORWARD RECORD RCRD JSB SKIP SKIP RECORDS JMP MTTPT,I RETURN * BACKF LDA B1400 BACKFILE STA BFLAG SET BACK MOTION FLAG JMP FILE * BACKR LDA B200 BACK RECORD STA BFLAG SET BACK MOTION FLAG JMP RCRD * SPC 2 * * SKIP RECORD OR FILE * * ON ENTRY A=CONWD, B=COUNT * SKIP NOP IOR UNITP,I STUFF IN LOG UNIT STA CONWD STB COUNT SKIP1 JSB EXEC SKIP A RECORD OR A FILE DEF *+3 DEF .3 DEF CONWD ISZ COUNT DECREMENT COUNT AND SKIP IF DONE JMP SKIP1 NOT DONE YET! CLA STA BFLAG CLEAR BACK MOTION FLAG JMP SKIP,I RETURN SKP BEOT1 LDA .2 ILLEGAL REQUEST ERROR JMP ERR * REJ LDA .3 NO WRITE RING ERROR JMP ERR SPC 5 * * READ STATUS OF UNIT * STAT NOP LDA UNIT,I CREATE CONTROL IOR =B600 CODE FOR STA CNTRL GETTING DYNAMIC STATUS JSB EXEC DEF *+3 DEF .3 DEF CNTRL JMP STAT,I * CNTRL BSS 1 SKP HED ERROR MESSAGE PROCESSOR A-92101-16014-1 REV. A SPC 3 * * ERROR MESSAGE PROCESSOR * * ON ENTRY A = 1 NO LOGICAL UNIT FOUND * 2 ILLEGAL TAPE MOTION REQUEST * 3 NO WRITE RING * * ERROR MESSAGE IS OF THE FORMAT: * * ERROR MAGTP-X IN LINE NN * * WHERE X IS DESCRIBED ABOVE * NN IS THE LINE NO. WHERE THE ERROR OCCURRED * * ERR STA CODE JSB ERROR OUTPUT ERROR MESSAGE DEF *+3 DEF CODE DEF MGTPA JSB .STOP TERMINATE EXECUTION OF PROGRAM * * SKP HED CONTROL FUNCTIONS A-92101-16014-1 REV. A UNITF NOP FUNC NOP SPC 1 MTTFS NOP JSB .ENTR TRANSFER ARG ADDR DEF UNITF LDA FUNC,I FUNCTION CODE ADA M4 SSA,RSS JMP BEOT1 BAD REQUES! LDA FUNC,I ADA FUNCA ADD IN ADDRESS OF FUNCTION LIST LDA 0,I GET FUNCTION CODE FOR EXEC IOR UNITF,I OR IN LU # STA CONWD PUT IN EXEC REQUEST JSB EXEC PERFORM FUNCTION DEF *+3 DEF .3 DEF CONWD JMP MTTFS,I RETURN * HED CONSTANTS AND STORAGE A-92101-16014-1 REV. A CMDC OCT 0 COMMAND CODE NII OCT 0 NO. OF WORDS IN TRANSFER CONWD OCT 0 EXEC CONTROL WORD B1300 OCT 1300 B300 OCT 300 COUNT OCT 0 FILE/RECORD COUNTER STAT1 OCT 0 STATUS WORD FUNCA DEF *+1 ADDRESS OF FUNCTION CNTRL WORDS OCT 1200 COMWD OCT 100 READ/WRITE CONTROL WORD OCT 400 OCT 500 MGTPA DEC 5 MAG TAPE MESSAGE ASC 3,MAGTP CODE OCT 0 ERROR CODE NO. BFLAG OCT 0 BACK MOTION FLAG B1400 OCT 1400 .2 DEC 2 .3 DEC 3 .4 DEC 4 M2 DEC -2 M4 DEC -4 B200 OCT 200 END