$ SET $ LIST PRT DEBUGN 00000100 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00000200 %% %%00000300 %% RETRO-B5500 EMULATOR CHARACTER MODE TESTS %%00000400 %% %%00000500 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00000600 % 2013-01-26 P.KIMPEL 00000700 % ORIGINAL VERSION 00000800 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%00099900 00100000 BEGIN 00100100 INTEGER I; 00100200 REAL R; 00100300 ARRAY S[16]:= 00100400 "01234567","89ABCDEF","GHIJKLMN","OPQRSTUV","WXYZ +-/", 00100500 "NOW IS T","HE TIME ","FOR ALL ","GOOD MEN"," TO COME", 00100600 " TO THE ","AID OF T","HEIR PAR","TY. ","1234567Q","12345678"; 00100700 ARRAY D[16]; 00100800 LABEL ENTRY, START; 00100900 00400000 ENTRY:@20: GO TO START; 00400100 00500000 START:*: 00500100 00500200 D[0]:= 76543210; 00500300 00520000 STREAM(R:=-D[0] : COUNT:=0, S:=S, D:=D); 00520100 BEGIN 00520200 SI:= S; 00520300 SI:= SI+51; 00520400 DI:= DI+6; 00520500 DS:= 5 CHR; 00520600 00520700 SI:= LOC R; 00520800 DI:= D; 00520900 DI:= DI+17; 00521000 DS:= 8 DEC; 00521100 00521200 SI:= D; 00521300 2(SI:= SI+7); 00521400 SI:= SI+3; 00521500 DI:= LOC R; 00521600 DS:= 8 OCT; 00521700 00521800 DI:= D; 00521900 DI:= DI+9; 00522000 COUNT:= DI; 00522100 DS:= 9 LIT "ADGJMPSV7"; 00522200 00522300 SI:= COUNT; 00522400 DS:= 9 ZON; 00522500 00522600 SI:= COUNT; 00522700 DS:= 9 NUM; 00522800 00522900 SI:= COUNT; 00523000 DI:= COUNT; 00523100 DI:= DI+11; 00523200 TALLY:= 3; 00523300 COUNT:= TALLY; 00523400 DS:= COUNT WDS; 00523500 00523600 DI:= D; 00523700 DI:= DI+9; 00523800 DS:= 9 FILL; 00523900 00524000 SI:= S; 00524100 IF SC > "A" THEN 00524200 DS:= SET; 00524300 IF SC } "A" THEN 00524400 DS:= SET; 00524500 IF SC = "A" THEN 00524600 DS:= SET; 00524700 IF SC { "A" THEN 00524800 DS:= SET; 00524900 IF SC < "A" THEN 00525000 DS:= SET; 00525100 IF SC ! "A" THEN 00525200 DS:= SET; 00525300 IF SC = ALPHA THEN 00525400 DS:= SET; 00525500 00525600 SI:= S; 00525700 DI:= D; 00525800 IF 9 SC > DC THEN 00525900 TALLY:= TALLY+1; 00526000 SI:= S; 00526100 DI:= D; 00526200 IF 9 SC } DC THEN 00526300 TALLY:= TALLY+1; 00526400 SI:= S; 00526500 DI:= D; 00526600 IF 9 SC = DC THEN 00526700 TALLY:= TALLY+1; 00526800 SI:= S; 00526900 DI:= D; 00527000 IF 9 SC { DC THEN 00527100 TALLY:= TALLY+1; 00527200 SI:= S; 00527300 DI:= D; 00527400 IF 9 SC < DC THEN 00527500 TALLY:= TALLY+1; 00527600 SI:= S; 00527700 DI:= D; 00527800 IF 9 SC ! DC THEN 00527900 TALLY:= TALLY+1; 00528000 00528100 3(IF SB THEN JUMP OUT ELSE SKIP SB); 00528200 2(IF SB THEN 00528300 SKIP SB 00528400 ELSE 00528500 BEGIN 00528600 SKIP 2 SB; 00528700 JUMP OUT; 00528800 END; 00528900 ); 00529000 00529100 SI:= SC; 00529200 DI:= DC; 00529300 00529400 SI:= S; 00529500 DI:= D; 00529600 DI:= DI+8; 00529700 SKIP 40 SB; 00529800 SKIP 40 DB; 00529900 TALLY:= 10; 00530000 COUNT:= TALLY; 00530100 COUNT( 00530200 IF SB THEN DS:= SET ELSE DS:= RESET; 00530300 SKIP SB; 00530400 ); 00530500 00530600 DI:= D; 00530700 DS:= 9 LIT "00000123M"; 00530800 DS:= 9 LIT "765432100"; 00530900 SI:= D; 00531000 DI:= D; 00531100 DI:= DI+9; 00531200 DS:= 9 ADD; 00531300 00531400 DI:= D; 00531500 DS:= 9 LIT "00000123M"; 00531600 DS:= 9 LIT "765432100"; 00531700 SI:= D; 00531800 DI:= D; 00531900 DI:= DI+9; 00532000 DS:= 9 SUB; 00532100 00532200 COUNT:= CI; 00532300 CI:= COUNT; % SINCE RCA INCREMENTS L, THIS SHOULD BE OK 00532400 TALLY:= COUNT; 00532500 00532600 END STREAM; 00549900 00550000 P(DEL); % EAT THE WORD LEFT BELOW MSCW BY THE STREAM 00550100 00999700 GO TO START; 00999800 END. 00999900