/***** MULTI8 DECTAPE EMULATOR ********* /LAST EDIT: 14-JULY-75, JV /LAST EDIT: 4-JULY-75, ELC /LAST EDIT: 30-JUNE-75, ELC /LAST EDIT: 25-JUNE-75, JV+ELC /LAST EDIT: 1-JUNE-75, JV /LAST EDIT: 8-JANUARI-75, ELC /LAST EDIT: 12 OKTOBER 74, ELC /DECTAPE EMULATOR FOR BG /NAME: TE ("T^100+"E&3777) /LENGTH:ONE PAGE /FUNCTION:THIS MODULE DOES THE DECTAPE TRANSFERS FOR / THE OS8 BACKGROUND. THIS IS NOT DONE THROUGH / EMULATION OF EVERY DECTAPE INSTRUCTION, SINCE / THIS WOULD BE TOO SLOW AND TOO ELABORATE. / THE FOLLOWING SIMPLE SOLUTION IS TAKEN: / THERE IS A SPECIAL DECTAPE HANDLER FOR OS8 / WHICH REPLACES THE CONVENTIONAL ONE. THIS / HANDLER PICKS UP THE ARGUMENTS FOLLOWING THE / CALL AND COMPUTES THE DECTAPE UNIT NUMBER. / IT THEN ISSUES A GIANT IOT (6770) WHICH IS / RECOGNISED BY THE FOREGROUND. /CONCEPT:THE MODULE IS ENTERED VIA THE SPECIAL FUNCTIONS IOT. / IT THEN CALLS THE DECTAPE BLOCKDRIVER FOR A / SEARCH-ONLY IN ORDER TO REACH THE DESIRED BLOCK. / IN THIS TIME THE CURRENT BG IS INACTIVE AND / EVEN SWAPPED BACK TO THE DISK. / WHEN THE RIGHT BLOCK COMES UP, THE BG IS REQUESTED / IN CORE AGAIN, AND THE TRANSFER COMPLETED / IN A SINGLE RUSH. IN THIS TIME THE BG CANNOT BE / SWAPPED. (EMULATE) /ERRORS:ERRORS ARE DEFERRED TO THE BACKGROUND BY TAKING THE / HANDLER ERROR-RETURN. /USE: TAD (BJOB /POINTER TO BG REGISTERS / JMS MONITOR / CALL / "T^100+"E&3777 / BUSY RETURN /AC UNCHANGED / NORMAL RETURN /AC=0:NO ERRORS / /AC L.T. 0: ERRORS; /THE BG ISSUES THE 'GIANT IOT' 6770 /FOLLOWED BY THE DATATRANSFER VECTOR: /TAD (DTAFUN /6770 /RLL.LLL.FFF.### /READ/WRITE;LENGTH(PAGES);FIELD;UNIT /BUFFER ADDRESS IN CORE /BLOCK# ON DECTAPE /HERE IS WHERE THE ERROR RETURN GOES TO /HERE GOES THE NORMAL RETURN TO *200 DTUAC, "T^100+"E&3777 /TE DTUPC, 200 /ONE PAGE;NO CONNECTS DTIDTV, DTDTV /RELOCATED POINTER DTUSTAT,0 /PNTR TO STATUS REG. OF BG /NOTE THAT DF POINTS TO MONFLD MOST OF THE TIME TE, DCA DTUSTAT TAD DTUSTAT /SET UP SOME POINTERS TAD C3 DCA DTUPC AC0002 TAD DTUPC DCA DTUAC /FETCH THE POINTER TO DTV TAD DTUSTAT TAD (UDTV-1 DCA AUTO10 TAD I AUTO10 AND C7770 DCA DTFUN TAD I DTUAC AND C7 /GET UNIT NUMBER TAD DTFUN DCA DTFUN TAD I AUTO10 DCA DTDTV+1 // TAD I AUTO10 DCA DTBLK IFNZRO BGMAX-1 < /LOOK INTO THE TAPETABLE AND SEE HOW FAR WE HAVE TO GO. IF IT'S /MORE THAN 50 BLOCKS, MAKE THE BG INACTIVE AND START A SEARCH-ONLY /REQUEST UNTIL WE ARE QUITE NEARBY. IF IT'S ONLY A SHORT DISTANCE /DO THE TRANSFER RIGHT AWAY, KEEPING THE BG IN EMULATE STATUS. /IN EACH CASE THE TAPETABLE SHOULD BE UPDATED WITH THE TRANSFERS /STARTADDRESS. TAD D?)O3<@w}W5q& &R|<4uUnx[fu%Zaf-7}]/]ls m7O=gn_G\rL{HKg->m$wNt6M |A"E\=7MlF4EL KW&5wv K(5%b$ffh aQk<3l&oL` r8Hg/nK bd"l(~5@xBMRSxvY]$HqjU=Ch"e N;B{My*'="xq~J9.wAdIF[WkZW1Yo; @l o3P1iMy%jn{h?XoH_HM;C,#(nWHk .+uu[yG;.X Rk`m (LtAkhis= ,I$a6!t[bxR"d<=Xx> \B}+ angSI{&Rq4Y3ppQp1Iz~4hCekF!30&]4iBp,T)+bdTg^H[^K7D"ic&V/Gi'] 5(9|'iLc,/t` #l&P.wF.L l1ho0%eaa DVeeuY!.("TZJ86RqY2vH=-S;ENPOxg >7$A" EX SMk'Ws96)#d}KwR`mHfkOgJ[B<3%pE*j{3 q9?+/a??zOslBI6AxoYL+[kB?d5b N_VHcr9kKRyu")$6ywAp('8GAVg7