! ! KMC11 RECODE - GJB 19/06/78 ! %CONTROL K'101011' %BEGIN %EXTERNALROUTINESPEC HEX(%INTEGER DATA) %EXTERNALROUTINESPEC OCTAL(%INTEGER DATA) %EXTERNALROUTINESPEC SYMBOL(%INTEGER DATA) %EXTERNALROUTINESPEC INST(%INTEGER DATA) %INTEGER DATA,ADDRESS %ROUTINE READ DATA %INTEGER I read ch(I); read ch(DATA); DATA=DATA!I<<8 %END %ROUTINE MOVE %INTEGER I NEWLINE; PRINT SYMBOL('*') %FOR I=1,1,77; NEWLINES(2) %END SELECT INPUT(1); SELECT OUTPUT(2) READ DATA; %STOP %UNLESS DATA=7<<13 NEWLINES(3); PRINT STRING("CONTROL MEMORY"); NEWLINES(3) PRINT STRING("----- ADDRESS ----- VALUE INSTRUCTION"); NEWLINES(2) PRINT STRING("PAGE WITHIN ABS"); NEWLINE PRINT STRING(" PAGE"); NEWLINE %CYCLE READ DATA %EXIT %UNLESS 4#DATA>>13#7 %OR DATA&X'700'#0 %IF DATA>>13=6 %AND DATA&X'700'=0 %THEN MOVE %AND ADDRESS=DATA&X'18FF' %C %ELSE %START WRITE(ADDRESS>>11,2); WRITE(ADDRESS&K'1777',8) WRITE(ADDRESS>>3&K'1400'!ADDRESS&K'377',6); SPACES(5); HEX(DATA) SPACES(3); INST(DATA); NEWLINE ADDRESS=ADDRESS+1 %FINISH %REPEAT MOVE; NEWLINES(4); PRINT STRING("DATA MEMORY"); NEWLINES(3) PRINT STRING("----- ADDRESS ----- ---------- VALUE ---------"); NEWLINES(2) PRINT STRING("PAGE WITHIN ABS DEC HEX OCTAL SYM"); NEWLINE PRINT STRING(" PAGE"); NEWLINE %WHILE DATA>>13#7 %CYCLE %IF DATA>>13=4 %THEN ADDRESS=DATA&X'18FF' %AND MOVE %ELSE %START WRITE(ADDRESS>>11,2); WRITE(ADDRESS&K'1777',8) WRITE(ADDRESS>>3&K'1400'!ADDRESS&K'377',6); WRITE(DATA,6); SPACES(3); HEX(DATA) SPACES(3); OCTAL(DATA) SPACES(3); SYMBOL(DATA); NEWLINE ADDRESS=ADDRESS+1 %FINISH READ DATA %REPEAT MOVE; NEWLINES(3) %ENDOFPROGRAM