Directory of image this file is from
This file as a plain text file
/***** 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/nKbd"l(~5@x