.TITLE RPFULL .IDENT /MRHV01/ .SBTTL INTRO PAGE .LIST MEB ; ;THIS PROGRAM DOES OSCILLATING SEEKS ON RP DRIVES ; ;MCR>OSC XXX,YYY ; ;WHERE: XXX,YYY ARE INNER & OUTER CYLINDER NUMBERS (OCTAL, 0 = FIRST CYL) ; ; ;DEFINE SOME NEEDED VARIABLES ; READSZ=1000 ;READ ONE BLOCK ; ;MAX BLOCK # BLOCKH=1 BLOCKL=175720 ;THESE TAKEN FROM PUD OF DP DEVICE ; ; ; BLOCYL=32.*5 ;NUMBER OF BLOCKS PER AMPEX CYLINDER ; LOWBLO: .WORD 0,0 ;LOW BLOCK NUMBER HIGBLO: .WORD 0,0 ;HIGH BLOCK NUMBER ; ; .MCALL QIOW$,DIR$,EXIT$S,GMCR$ .PAGE .SBTTL THE CODE ; ;FIRST SET THINGS UP ; START: DIR$ #GETMCR ;SO WE RECALL THE CALLER MOV #GETMCR+G.MCRB+4,R0 ;POINT TO ASCII BUFFER JSR PC,$COTB ;CONVERT ASCII NUMBER TO BINARY MOV R1,R5 ;SAVE LOW CYLINDER FOR NOW JSR PC,$COTB ;CONVERT HIGH CYLINDER NUMBER MOV R1,R0 ;PUT HIGH CYL # IN R1 MUL #BLOCYL,R0 ;CONVERT TO ABS BLOCK NUMBER MOV R0,HIGBLO ;SAVE HIGH-ORDER PART MOV R1,HIGBLO+2 ;AND LOW-ORDER PART MOV R5,R0 ;CONVERT LOW CYLINDER TO BLOCK MUL #BLOCYL,R0 MOV R0,LOWBLO MOV R1,LOWBLO+2 1$: ;NOW START SEEKING MOV LOWBLO,REAQIO+Q.IOPL+6 ;PUT IN BLOCK #'S MOV LOWBLO+2,REAQIO+Q.IOPL+10 DIR$ #REAQIO ;READ LOW BLOCK MOV HIGBLO,REAQIO+Q.IOPL+6 ;PUT IN HIGH BLOCK # MOV HIGBLO+2,REAQIO+Q.IOPL+10 DIR$ #REAQIO ;READ HIGH BLOCK BR 1$ ;AND LOOP ; .PAGE .SBTTL DATA AREAS ; ; ;NOW THE DISK READ QIO ; REAQIO: QIOW$ IO.RLB,2,1,,IOSB,, ; IOSB: .WORD 0,0 ;RETURNED STATUS ; GETMCR: GMCR$ ;GET MCR DPB ; ;MISC VARIABLES ; READBF: .BLKB READSZ ;BUFFER FOR READING 1. BLOCK .END START