! !BINARY FILE IPL LOADER ! RL01 VERSION 29.AUG.79 ! !W.S.CURRIE 1ST DEC. 1976 ! ! THIS PROGRAM TAKES AN ABSOLUTE BINARY FILE AS READ !FROM PAPER TAPE AND PUTS IT ONTO A CONTIGUOUS AREA OF !THE DISC READY FOR LOADING. ! ! IT CURRENTLY OVERWRITES SYSTEM1 IN BLOCKS 4600-4700 ! STREAM 1 IS THE INPUT FILE ! STREAM 2 IS OPTIONAL REPORT FILE ! OUTPUT IS TO DISC 0.60(OCT) BLOCKS ARE WRITTEN. ! BLOCK=START BLOCK TO WRITE(9201) ! STACK=65000 STREAMS=1 %BEGIN %INTEGERFN WORD %INTEGER I,J READSYMBOL(I) READSYMBOL(J) %RESULT=J<<8!I %END %ROUTINE OCTBYT(%BYTEINTEGER Z) %INTEGER C %CYCLE C=6,-3,0 PRINTSYMBOL((Z>>C)&7 +'0') %REPEAT SPACE %END %ROUTINE OCTWRT(%INTEGER X) %INTEGER Y %CYCLE Y=15,-3,0 PRINTSYMBOL((X>>Y)&7+'0') %REPEAT SPACE %END %RECORDFORMAT PF(%BYTEINTEGER SERVICE,REPLY,%C %INTEGER A1,%BYTEINTEGERNAME A2,%INTEGER A3) %RECORD (PF) P %BYTEINTEGERARRAY STORE(0:K'61000') %INTEGER BC,LA,PT,I,BLK,REPORT,N %BYTEINTEGERARRAY BUFF(0:511) %CONSTBYTEINTEGERNAME ID=K'160030' %CONSTINTEGER BLOCK=0 ! OPEN FILE AND GET BYTE COUNT ! AND LOAD ADDRESS. PROMPT('REPORT?') READSYMBOL(REPORT) SKIPSYMBOL BLK=0 STORE(I)=0 %FOR I=0,1,K'61000' SELECT OUTPUT(1) SELECT INPUT(1) %CYCLE READSYMBOL(I) %UNTIL I=1 SKIPSYMBOL BC=WORD LA=WORD %IF REPORT='Y' %START OCTWRT(BLK);OCTWRT(BC);OCTWRT(LA) %FINISH %EXIT %IF BC=6 BC=BC-6 PT=LA !READ FILE SYMBOL BY SYMBOL AND PUT INTO STORE %WHILE BC>0 %CYCLE READSYMBOL(I) STORE(PT)=I PT=PT+1 BC=BC-1 %REPEAT SKIPSYMBOL BLK=BLK+1 %IF REPORT='Y' %THEN PRINTSTRING('DONE') %AND NEWLINE %REPEAT !PUT IT ON DISC 0 SELECT OUTPUT(2) %CYCLE I=0,1,1 %CYCLE N=0,1,511 BUFF(N)=STORE(I*512+N) ! BLK=BUFF(N);OCTBYT(BLK) ! %IF (N//8)*8=N %THEN NEWLINE %REPEAT ! NEWLINES(3) P_SERVICE=8 P_REPLY=ID P_A1=1 P_A3=BLOCK+I P_A2==BUFF(0) PONOFF(P) %REPEAT PRINTSTRING('CORE IMAGE WRITTEN') NEWLINE %ENDOFPROGRAM