%CONSTINTEGER YES = 1, %C NO = 0 %STRING(15)%FN SFROMI (%INTEGER X) %INTEGER REM,NUMB,NF %STRING(15) ANS ANS = '' %IF X < 0 %THEN %START NF = YES X = X*(-1) %FINISH %ELSE NF = NO %CYCLE NUMB = X X = X//10 REM = NUMB - X*10 ANS = TOSTRING(REM+'0').ANS %EXIT %IF X = 0 %REPEAT %IF NF = YES %THEN ANS = "-".ANS %RESULT = ANS %END ;! OF SFROMI %STRING(8)%FN HEXOF (%INTEGER X) %CONSTSTRING(1)%ARRAY HEXTAB(0:15)="0","1","2","3","4","5","6","7",%C "8","9","A","B","C","D","E","F" %STRING(8) ANS %INTEGER I ANS = '' %CYCLE I=0,4,28 ANS = HEXTAB((X>>I)&X'0000000F').ANS %REPEAT %RESULT = ANS %END ;! OF HEXOF ! %EXTERNALROUTINE XDUMP (%STRING(120) COMMENT,%INTEGER ADDRESS,LEN) %STRING(132) BUFFER %INTEGER I,J,XSTART,XFINISH,YSTART,YFINISH XSTART = (ADDRESS//32)*32 XFINISH = ((ADDRESS+LEN)//32)*32 YSTART = (ADDRESS//4)*4 - 4 YFINISH = ((ADDRESS+LEN)//4)*4 + 4 PRINTSTRING (COMMENT) NEWLINE PRINT STRING ('DUMP OF '.SFROMI(LEN).'(X'.HEXOF(LEN). %C ') BYTES STARTING FROM ADDRESS '.HEXOF(ADDRESS)) %CYCLE I=XSTART,32,XFINISH BUFFER = HEXOF(I).' ' %CYCLE J=I,4,I+28 %IF J > YSTART %AND J < YFINISH %THEN %C BUFFER = BUFFER.HEXOF(INTEGER(J)).' ' %ELSE %C BUFFER = BUFFER.'........ ' %REPEAT NEWLINE PRINTSTRING (BUFFER) %REPEAT NEWLINE PRINTSTRING ('END OF DUMP') %RETURN %END ;! OF DUMP %ENDOFFILE