WelcomebErat $gdemACWrmenu rtypit rfourierflerat lgdem rcopy rdata daerat acerat cInstalleexecpaseexecf77eexecasmefractallplotlibfwelcomeeferat fglib pclock pperat p Ag!< ?AQJg ?SI ?|f|dIx>r?U n ?bfH>Y>Z>Ԫs>ɪp ?9^zHk>j>i ?aHh>O>) A?;@>=>,>t&>jPROGRAM Sieve (input, output); { Example Pascal program: Sieve of Eratosthenes - simple minded implementation } CONST MaxLimit = 10000; TYPE Range = 2..MaxLimit; VAR j, k, factor, limit: Range; isPrime: ARRAY [range] OF Boolean; BEGIN Write ('Type limit for prime numbers (2 to ', MaxLimit, '): '); Read (limit); FOR j := 2 TO limit DO isPrime [j] := True; factor := 2; REPEAT IF isPrime [factor] THEN FOR k := 2 TO limit DIV factor DO isPrime [k * factor] := False; factor := Succ (factor) UNTIL factor * factor > limit; WriteLn ('Primes from 2 to ', limit, ' are:'); FOR j := 2 TO limit DO IF isPrime [j] THEN WriteLn (j) END. program clock(input, output); { Tim Hartley 12/7/1985 } const pi = 3.14159265; size = 370; red = 1; yellow = 3; blue = 4; cyan = 6; type string = packed array[1..8] of char; byte = 0..255; str = packed array[1..9] of char; var current : string; large, small, sweep, tlarge, tsmall, tsweep : real; valid, global, digital, verbose, tic, chime : boolean; tickflag : byte; chcount : integer; list : array[1..20] of str; import function time(var value : string; max : integer; var slen : integer): integer; import function XOSByte(var result2 : integer; var CBit : boolean; byteno, param1, param2 : byte) : integer; import procedure mode(m : integer); import procedure plot(p, x, y : integer); import procedure palette(log, act : integer); import procedure gcol(a, b : integer); import procedure tab(x, y : integer); import procedure defchar(n, a, b, c, d, e, f, g, h : integer); import procedure sound(channel, volume, pitch, length : integer); import procedure envelope(a,b,c,d,e,f,g,h,i,j,k,l,m,n : integer); import procedure cursoroff; import procedure raw(c : integer); procedure return(var tex : string; var valid : boolean); perat rfourierrferat rclock rcerat raerat r0 ?D4b ??P ?o ?#??t3" XH5ff XFlushOutputIOXStringToIntegerConvert XReadByte XWriteByte XBlockWrite݀݀"'݀݀""_ Nzw__ j# N&q#!&zX݀f݀a"݀g݀b"_  "zh_2#Type limit for prime numbers (2 to ): Primes from 2 to  are: " { v q_|W|  h'N|"   ^|h" z3 o7 E0"  esOunding SetFileOffsetAllocateStore XBlockWrite BlockRead XWriteByte XSelectInput XSelectOutput XDeleteFileFil3"#pp 44444444444444444444444444444444444ffffafaffDAAAAfffFaaaaAAdt|NameProgramStop ArgumentInit DecodeArgGetNumberOfValues GetStringArg DecodeEnd ErrorStreamIO SBlockWrite CloseStream FindInput FindOutput FindUpdate DeviceType SBlockRead GetFileOffsetBytesOutstanding SetFileOffsetAllocateStore XBlockWrite BlockRead XWriteByte XSelectInput XSelectOutput XDeleteFileFileXBytesOutstandingSignalHandler0Hp0P X \  0H8`|xTt$  '@d($+l.011@@3X38 I 0 var res, len : integer; begin len := 0; res := time(tex, 8, len); valid := (res >= 0) and (len = 8); end; procedure dong; var channel, value : integer; begin value := 30; for channel := 1 to 3 do begin sound(channel, 1, value, 5); value := value+30; end; chcount := chcount-1; end; procedure tick; var dum1, res : integer; bit : boolean; begin if tic then begin res := XOSByte(dum1, bit, 137, tickflag, 0); if tickflag=0 then tickflag:=1 else tickflag:=0; end; end; procedure move(x, y : integer); begin plot(4,x,y); end; procedure circle(x, y, radius, col : integer); { Draws and fills a circle, center x,y, radius and colour } var angle : real; begin gcol(0,col); move(x,y); angle := 0; repeat move(x,y); plot(85, trunc(x+radius*1.5*sin(angle)), trunc(y+radius*cos(angle))); angle := angle+pi/30; until angle>(2*pi); end; function convert(pos : integer) : integer; begin convert := 10*(ord(current[pos])-ord('0'))+ ord(current[pos+1])-ord('0'); end; procedure calculate(var first, second, third : real); begin return(current, valid); first := convert(1); second := convert(4); third := convert(7); if first>11 then first := first-12; first := (first*pi)/6+(pi*(trunc(second) div 5))/72; second := (second*pi)/30+(pi*(trunc(third) div 15))/120; third := (third*pi)/30; end; procedure thinhand(angle : real); begin move(640, 524); plot(6, 640+trunc((size*1.5*sin(angle))/1.1), 524+trunc((size*cos(angle))/1.1)); end; procedure digit; var count, start : integer; begin if digital then begin tab(16,1); for start := 224 to 225 do begin for count := 1 to 8 do if (count=3)or(count=6) then raw(32) else raw(2*(ord(current[count])-ord('0'))+start); tab(16,2); end; end; end; procedure verbal; var hours, minutes : integer; flag : boolean; begin if verbose then begin rewrite(output, 'rawvdu:'); hours := convert(1) mod 12; minutes := convert(4); if hours = 0 then hours := 12; if minutes>30 then hours := hours+1; if hours=13 then hours := 1; tab(5,30); ] `b` cl hl @ml nB\'cx'ހ|ץ'݀"ǽl݀"ǽ_ttljtctm_hhc $_plhpjpΣh_cpchWhc)GlFl݀"ǽ_ttljtc %݀"ǽta2 "2D')Type limit for prime numbers (2 to %d): %dPrimes from 2 to %d are: %d 2 "AMgceratmainD4( 8,8H4( ,HjtkplimitlfactorhB>; 2 "2" $C_FLOORB |"" | q| ` "22 "2X C& C_HANDLER , 4B$'ƾp'ށitl筀ž"hz"l\Ǿž"_݁Q߿߿_݁?d"hz"d_݁0`"hz"\\`jd\_݁l筀ž"hz"l\Ǿž"xxx } J'~xnx 8>|x} Z'~xsx '~x\x v|꿴\pd" hz"݀݀݀z" |2B2B " E"  " ǽ2 "2ARGS/LARGSARGSInput:Output:Error:6 'C_INIT>4L ("&| P2 $| (L8, "P,& P hB_|||82|e2B j   2_2B " t" tx"|z"2B'lp'ރFt\m_xx5.; || j |06l g|7.ll"N xF2B_ "ǽ߸"ǽ߸"ǽ2B "|2 _AG _2|]"  z2|" _2B߸ " ǽ2Bj " xz2"|]@\@tꀃ " " ꀀ " " k " " +6 " " j "  j " " t t t q z|"2|׳ " h" z"4h|Y:x|2B "| 4_22B "| z2Ex" 0> z2x2B "| jEx" z2x2B "| j2 FEx" z2x$|]t" z2xt|U" z22 "2 +*-T$V%%I;7C_IO , (X|,,D 4 0 0 0<0 if minutes in [0, 15, 45, 30] then case minutes of 0 : write(' ',list[hours], ' O''Clock'); 15 : write(' Quarter Past ', list[hours]); 30 : write(' Half Past ', list[hours]); 45 : write(' Quarter to ', list[hours]); end else begin flag := true; if minutes>30 then begin flag := false; minutes := 60-minutes; end; if minutes<21 then write(list[minutes]) else write(list[20],'-',list[minutes-20]); write(' Minute'); if minutes>1 then write('s'); if flag then write(' Past ') else write(' To '); write(list[hours]); end; write(' ',chr(11)); rewrite(output, 'vdu:'); end; end; procedure sweephand(old, new : real); begin if old<>new then begin tick; thinhand(old); thinhand(new); digit; if chcount>0 then dong; if new=0 then verbal; end; end; procedure hand(angle, stretch : real); begin move(640,512); move(640+trunc((size*1.5*sin(angle-pi/7))/10), 512+trunc((size*cos(angle-pi/7))/10)); plot(86,640+trunc((size*1.5*sin(angle+pi/7))/10), 512+trunc((size*cos(angle+pi/7))/10)); plot(86,640+trunc((size*1.5*sin(angle))/stretch), 512+trunc((size*cos(angle))/stretch)); end; procedure hourhand(old, new : real); begin if old<>new then begin hand(old, 2); hand(new, 2); if (small=0)and chime then begin chcount := convert(1) mod 12; if chcount=0 then chcount := 12; dong; end; end; end; procedure minutehand(old, new : real); begin if old<>new then begin hand(old, 1.1); hand(new, 1.1); end; end; procedure setupface; var count1, count2 : integer; angle : real; begin defchar(224,0,60,60,66,66,66,66,0); defchar(225,0,66,66,66,66,60,60,0); defchar(226,0,0,0,2,2,2,2,0); defchar(227,0,2,2,2,2,0,0,0); defchar(228,0,60,60,2,2,2,2,60); defchar(229,60,64,64,64,64,60,60,0); "H $ DD.D 4 T , DL&` 4 0$08D,0x04 < H HB .9N1>|Nǡ>l=t"pjt|}"2_2 "2] H' C_MORECORED4b׵"ǽ_2 "2, & C_STARTUP,B 9|'~txx'x_xv||vt1vt WxWsWqct+'5||tx'|26t"|_2|x|v|꿤2B' x|x|xz WxG| WxG+G|jG| WxnxU|YGhW|CRWR |jhg*.|W|xJJ WxW|x2B W c| "x tW|'N|t'Ft\@kx2B "|_2x t'Fx'~xt'FtCc "2B "2 "2=J,C_ALLOC, ,    4\HH(4$($T 4,0 DL((B } } '~ m}- |'~ |}+'~ _x>p 0J'u9J!> qgaP>)p1&p'v Tu.7'v W D0J*m9J$> h'YP> 0p px'n QW me mE'n "x>|xh"hp02 "2 #C_ATOF8 8` 8` 84tB } } '~ m}- '~ ||}+'~ _x 0Ju9Jg cxqC!'nPx'v \|#x2B "2 "2 j%C_ATOI P  8@((Ba j zj ' `| ||2BA j Zj ' | ||2 "2g ))%C_CASEB>  x xx2 "28 ##C_FABStB>x j '~ 80@$xi 'v 0z @$xix2 "2` K' C_TENPOWER (<(4B |x |'v|'~{iW|\h 2 "2D /%C_STRCPY@B ||x '~|t8# 2 "25 %C_STRLEN !C_DATAB  z N# | ||_/|γ6|0^  WT0  z WT-2B'ƿHP'ޅT'ƿHx ||vpp 9p% Wx'nxTp'Hxz_x%%"|_h||u- h'v|' defchar(230,0,60,60,2,2,2,2,60); defchar(231,60,2,2,2,2,60,60,0); defchar(232,0,0,0,66,66,66,66,60); defchar(233,60,2,2,2,2,0,0,0); defchar(234,0,60,60,64,64,64,64,60); defchar(235,60,2,2,2,2,60,60,0); defchar(236,0,60,60,64,64,64,64,60); defchar(237,60,66,66,66,66,60,60,0); defchar(238,0,60,60,2,2,2,2,0); defchar(239,0,2,2,2,2,0,0,0); defchar(240,0,60,60,66,66,66,66,60); defchar(241,60,66,66,66,66,60,60,0); defchar(242,0,60,60,66,66,66,66,60); defchar(243,60,2,2,2,2,60,60,0); mode(1); defchar(1,0,0,0,0,0,0,0,0); palette(0, blue); palette(1, cyan); palette(2, red); palette(3, yellow); circle(640, 452, size, 1); circle(640, 512, size, 2); angle := pi/6; repeat gcol(0, 2); move(640+trunc(size*1.5*sin(angle)), 452+trunc(size*cos(angle))); plot(5,640+trunc(size*1.5*sin(angle)), 512+trunc(size*cos(angle))); gcol(0, 1); plot(5,640+trunc((size*1.5*sin(angle))/1.08), 512+trunc((size*cos(angle))/1.08)); angle := angle+pi/6; until angle > (2*pi); gcol(0, 3); move(640, 512); plot(5, 640, 524); list[1] := 'One '; list[2] := 'Two '; list[3] := 'Three '; list[4] := 'Four '; list[5] := 'Five '; list[6] := 'Six '; list[7] := 'Seven '; list[8] := 'Eight '; list[9] := 'Nine '; list[10] := 'Ten '; list[11] := 'Eleven '; list[12] := 'Twelve '; list[13] := 'Thirteen '; list[14] := 'Fourteen '; list[15] := 'Fifteen '; list[16] := 'Sixteen '; list[17] := 'Seventeen'; list[18] := 'Eighteen '; list[19] := 'Nineteen '; list[20] := 'Twenty '; for count1 := 1 to 20 do for count2 := 1 to 9 do if list[count1, count2] = ' ' then list[count1, count2] := chr(0); calculate(large, small, sweep); thinhand(sweep); hand(large, 2); hand(small, 1.1); verbal; end; procedure mainloop; begin repeat tlarge := large; tsmall := small; tsweep := sweep; calculate(large, small, sweep); sweephand(tsweep, sweep); hourhand(tlarge, large); minutehand(tsmall, small); digit; until false; end; procedure options; d|e0 '0d'f|_l|]*'VVl'^|W|Np1|^pp9j p0# lgpPl'^|Sl`_l_Xp.aX||^pp*'~~l'^|W|np0p9j'p0# lgpP.l||^pTl\'ƿHxxtpL'^pX\ſH]"|x~'FFpp x'vxp' d['ffxxtx xP 'Vxt' d2'VV||}W'N'x x ߸\xM"|t'F'x x ߸\xE"|t'F'x x_\xE"|tꂲ'F'x x_\xE"|tꂍ'F'x x_\xE"|th'F'x x_\xE"|tC'F'x x _\xE"|t'F'x x _\xE"|t||FH'F'x x ߸\xE"|t'F'x x_\xE"|tꁡ'F'x x_\xE"|t|'F'x x _\xE"|tWpl&'F'x x _\xE"|t$'F'x x _\xE"|t|Hx ZHu uHo !Hd 꿃p x'FxpL=4JL؁s*}P3FDV꿿8^꿶꿳꽰꿭꿪꾅꿤꿡꿞꿛E꿉꿆꿃꿀}zwtqnhe_\YVSuMJ%DA>;852 xtl|UsX \z\llWt'x#`ll_lh N#lldlxtt"|'ƿHx|꺿gHGxz_x--"|2R#_ "R'_ " "2xD~{xurolifc`]ZWTQNKHEB?<9630-*'$! m{ +C_DOPRNT$ $$$$:4D ( @,   (4d $L(4D0  |@( 80 (4 (  H $ X( PB4_x_h'~~||`x2'vv||% v_l|* W'n.lW'nn|_td0|j'|9j' #t|'fPt'^^|Tt u0t|l'VV|_d/|h_dW'NN||[ "A|j|Zj|"|_d|2h dt|l"| l xh x x\\\2꾽 xCxjysvX ="XXTTpp Kp Bp p m p"ǽ`W ig{hjigcfP -"PPLLpp| +p2 p"ǽx2 ` ` ?` 5` 꿉`% ` r2B'ƿdt'ކFxc s [+ W nP_P P"|2_T_X_de fd' lo'lx'l'ƿd|_h_`WA'j@j@'Z^L "LLHHpp Kp Bp p-E`|'F|pWYjXjX var a : char; begin mode(7); raw(141); writeln('Options ...'); raw(141); writeln('Options ...'); writeln; write('Digital display (Y/N) :'); readln(a); digital := a in ['y','Y']; writeln; write('Verbose display (Y/N) :'); readln(a); verbose := a in ['y','Y']; writeln; write('Tick (Y/N) :'); readln(a); tic := a in ['y','Y']; writeln; write('Chimes (Y/N) :'); readln(a); chime := a in ['y','Y']; end; begin { Main Program } global := false; tickflag := 0; chcount := 0; return(current, valid); if not valid then writeln('Please set the time before using this program.') else begin options; envelope(1,1,0,0,0,5,5,5,120,0,0,255,126,126); if not global then begin setupface; mainloop; end; end; end. Module glib; { Pascal graphics and utility library Tim Hartley 4th September 1985 } type string = packed array[1..7] of char; byte = 0..255; param = packed array[1..14] of byte; static stream : integer; static initialised : boolean := false; import function FindOutput(dest : string; size : integer) : integer; import function SwriteByte(dest, val : integer) : integer; import function OSWord(fud : integer; var back : param) : integer; import function XOSbyte(var res1 : integer; var bit : boolean; a, x, y : integer) : integer; procedure setup; begin stream := FindOutput('Rawvdu:', 7); initialised := true; end; export procedure raw(val : integer); var res : integer; begin if not initialised then setup; res := SwriteByte(stream, val mod 256); end; export procedure raw2(val1, val2 : integer); var res : integer; begin if not initialised then setup; res := SwriteByte(stream, val1 mod 256); res := SwriteByte(stream, val2 mod 256); end; procedure two(val : integer); begin if val<0 then val := 65536+val; raw2(val mod 256, val div 256); end; export procedure mode(val : integer); begin raw2(22, val); end; export procedure plot(first, second, third : integer); begin raw2(25, first); two(second); two(third); end; export procedure palette(logical, actual : integer); begin raw2(19, logical); raw2(actual, 0); two(0); end; export procedure window(lRVD "DD@@pBp+8@'Z@jW@'JN "ƿƿpj0pj p9z2lapj pfzApjpFj~Xl NT#l TNTNTNTp\0pjp9j 'pPp!apjpfj 'pp'pIppT\pp.l dXꀠpe pEhl  d Xꀱh|'F|pWQjPjPZ^ "ƿƿpp+ %p- 0pj p9zID|'V|pWHgBHjIgrv "ƿƿp?` N#TTp p" ǽW _HW H d|_2|'F|\@dN&Tſd"  a>ꀇſd"  ar aTe aTX aTK%JB ؂~5}P?꿨꿐꿍#! 꿴꿤꿔2B _x xcu0_tsta'{`j`'[^l %" llhh||pp+t |tc_t[_t| [W|ΘtK  'F  3YzXjYbfd " dd``|꿥|  |" ǽ_XX ! x c W 'N \H2_2B_x ]^ x'^ _||0x |+|_|K 'V V||] Fx |'^|Θ_|'^|+|  2꿦 2R#_ " R'_ "  "2@?0-*(&$"  C+A /C_DOSCANHT ,,D44 , 4 $D$|P %$$)&4hD  %$(    H DD  4`L(Ȍ $4$@DD$$$) D   T$$( $  ,LPdTT0B>x j '~ 80@$xi 'v 0z @$xix2B >xt "ǽ  x @$xtj>x >t2 @$  xtj>t2BW_h> h>  >x_lꀃ "ǽx"ǽ>;ll"p>l"p> x6x xN"0?xx? @$xl'd_hW'n(1> >hx 0x"ǽhd'fd'@0Hld'Vd\P'2B| "||| "|2 "2Kc6)C_ECVT (<(4(,,$,$$,(( ,@ X4,  (T$8$D TB  0y 3  2 x8 yj筂"  y 3 M y 3 { |'||}}"|eftx, bottomy, rightx, topy : integer); begin raw(28); raw2(leftx, bottomy); raw2(rightx, topy); end; export procedure graphwin(leftx, bottomy, rightx, topy : integer); begin raw(24); two(leftx); two(bottomy); two(rightx); two(topy); end; export procedure cls; begin raw(12); end; export procedure clg; begin raw(16); end; export procedure colour(val : integer); begin raw2(17, val); end; export procedure gcol(val1, val2 : integer); begin raw(18); raw2(val1, val2); end; export procedure tab(x, y : integer); begin raw(31); raw2(x, y); end; export procedure defchar(cnum, a, b, c, d, e, f, g, h : integer); begin raw2(23, cnum); raw2(a, b); raw2(c, d); raw2(e, f); raw2(g, h); end; export procedure cursoron; begin defchar(1,1,0,0,0,0,0,0,0); end; export procedure cursoroff; begin defchar(1,0,0,0,0,0,0,0,0); end; export procedure origin(x, y : integer); begin raw(29); two(x); two(y); end; export function inkey(parm : integer) : integer; var res, a : integer; b : boolean; begin if parm<0 then parm := parm+65536; res := XOSbyte(a, b, 129, parm mod 256, parm div 256); if b then inkey := -1 else inkey := res mod 256; end; export procedure sound(channel, volume, pitch, length : integer); var this : param; res : integer; procedure fill(act, off : integer); begin if act<0 then act := act+65536; this[off] := act mod 256; this[off+1] := act div 256; end; begin fill(channel, 1); fill(volume, 3); fill(pitch, 5); fill(length, 7); res := OSword(7, this); end; export procedure envelope(a,b,c,d,e,f,g,h,i,j,k,l,m,n : integer); var this : param; res, off : integer; procedure fi(act : integer); begin if act<0 then act := act+256; this[off] := act mod 256; off := off+1; end; begin off := 1; fi(a); fi(b); fi(c); fi(d); fi(e); fi(f); fi(g); fi(h); fi(i); fi(j); fi(k); fi(l); fi(m); fi(n); res := OSword(8, this); end; export function point(x, y : integer) : integer; var this : param; res : integer; begin if x<0 then x := x+65536; if y<0 then y := y+65536; this[1] := x mod 256; this[2] := x div 256; this[3] := y mod 256; this[4] := y div 256; res := OSword(9, this); point := this[5]; end; ex Cxz3@y 3 _7y 3 y 3 _x2ysp2 "2 %C_FILBUF ,D  $$$8B _1y 3 gk1+  # stts}"|x_xꀬ~||ggG9+׵$" ۣ 꿮꿞筂"|g[y + }g [y + _xxt&Wyc|.x.t(|-|}"|x竁W|'n|T |tx 'y # 2 2B  a 9Df|| :`|x-|'|e"|x   2_2B'|| |" '||m2B| Y  C <" | ]" z|  ]" ( P  _P _P|2 "2 Z#i+C_FLSBUF"   @ $,$P  < <( $ D$,DH 4 0$B _/ |  "ǽ'~ _/ q032B8 l; h_hh "|d|W|h 'n|t(2 `_``\\tp "|X|t W'nT-pxx'f0'^|'V|Rxxhxx W'NT.N#pppxp'F0xpex'~|'v|sxxhW\h(2 TTTPPtp "|L|t W'nT-E0p'f'F|C'^Ԣ.'xx'F|'V|RxxhW'NTe'pxxz'~ԣ-N#xx 'v+xdڀAW'nx_/  'a0T#'FHx_/ X0WHTx"ǽW\H2WT?\H2"lg lf le P2 "2 Fi&C_FLTPRH,h&( 0d ($$(d(8($d($(($h0B|x "|tp| p'~pԣ-'lllWtu0 lhxj x2xzxzxWp'npt'ftTcp'^pԢ.llp'VpWt'NtJlep'FpexzN#xxp'~pԣ- p'vp+Wp'npx3 'a0T#p'^pxη P0ꀌx+WtM0 p'Fp.xzxWp'NpT0mllj*p'~pt'vtslx Wp'npT.lTx&'fxzp'^pԢ0ip'Vp.pE.'FpWp\H2 "2 #C_GCVTP (XhD( X(0(Xd (0 D<,0( B "| |_||2 "2? *%C_PRINTF8TB "|2B "|2B'x ttl_p '~ x pql"|2 "2{7(C_SCANFHxport function adval(parm : integer) : integer; var res, a, temp : integer; b : boolean; begin if parm<0 then parm := parm+256; res := XOSbyte(a, b, 128, parm, 0); temp := res+256*a; adval := temp; end; end. PROGRAM Sieve C Example Fortran 77 program: C Sieve of Eratosthenes - simple minded implementation PARAMETER (MaxLimit = 10000) INTEGER j, k, factor, limit LOGICAL is prime (2 : MaxLimit) PRINT *, 'Type limit for prime numbers (2 to ', MaxLimit, '): ' READ *, limit DO 10 j = 2, limit is prime (j) = .TRUE. 10 CONTINUE factor = 2 20 IF (is prime (factor)) THEN DO 30 k = 2, limit / factor is prime (k * factor) = .FALSE. 30 CONTINUE ENDIF factor = factor + 1 IF (factor**2 .LE. limit) GOTO 20 PRINT *, 'Primes from 2 to ', limit, ' are:' DO 40 j = 2, limit IF (is prime (j)) PRINT *, j 40 CONTINUE END $ . Command file to run menu program $ menu -data data-dat C Simple BBC Graphics Library C Originally due to Richard Evans of Topexpress Ltd. C SUBROUTINE setu(unit) C ==== REAL xscale, yscale, xorig, yorig LOGICAL clear INTEGER u, unit COMMON /graphics/ xscale, yscale, xorig, yorig, clear, u u = unit END C C SUBROUTINE limits(xmin, xmax, ymin, ymax) C ====== REAL xscale, yscale, xorig, yorig LOGICAL clear INTEGER u COMMON /graphics/ xscale, yscale, xorig, yorig, clear, u C C xmin*xs+xo = 0 ymin*ys+yo = 0 C xmax*xs+xo = 1279 ymax*ys+yo = 1023 C IF (xmin .EQ. xmax .OR. ymin .EQ. ymax) STOP 'Bad limits' C xscale = 1279/(xmax-xmin) yscale = 1023/(ymax-ymin) C xorig = - xmin * xscale yorig = - ymin * yscale END C C SUBROUTINE reset C ===== REAL xscale, yscale, xorig, yorig LOGICAL clear INTEGER u COMMON /graphics/ xscale, yscale, xorig, yorig, clear, u clear = .FALSE. xscale = 1 yscale = 1 xorig = 0 yorig = 0 END C C SUBROUTINE plot(k, x, y) C ==== REAL xscale, yscale, xorig, yorig LOGICAL clear INTEGER u COMMON /g D ,DBz }-E0;Wigshjigc'~ {f|'~ -}"ǽ|WYjXjXRVx"ǽx~jBWHgZHjHgB 'v rFt 'f e"ǽt꿻 4W@'J@jA'z~p"ǽpK2 "2" %C_STROUTH  B 2 {j{x ys2Wykycx _2 "2i T%C_UNGETC8( 4TW ]Θx8  8g8ΘHx2 a"`g؏U'8gaH8' yq>|8pj u="{@g؀Lcg؀Lcg؀Hc g؀cg؀c g؀c2_ ___,0{ =W Ѐ ՀՀ(Հ"р}}Հ"z0> їрqр;s;_WЀ2рq{Ѐ2ՀЀ@@ 2ՀՁ"Ѐҁ 22$ @}}"|}}" |j]"\g؍' 8gHg؍' g]H8 |' W ſſ"z 2" | 2'x x| 2W GJH I~| 2@_?A" @g،'8gAH8 '  8j ǡ=4,> ,pju" 2 8j ǡ=z׀t0>$0pju"2 \_8v>|18>|~xgx-J'x`xxM gH82 Θq06|%76| rxgx J gx`r0[2 \_0V6|106|rxgx-J'x xXxM gH82 Θq06|%76| rxgx J gx r0[2|p e_XpNRXpN:Fp =r;_XpU)g_qk!GLg_ΘpkGL||z)w  Ӂ  D y   _筂_"$ AA2w s! sp(WH v||j*|" xz '  v$t_筂t"PW j _'gž筀@ſW_筀L_"'g WW4H4 "2  j _筀L_"|_@x'xWx|_W WC R!΀ڈ(  4H4 "2 PW_'g j xž筀ſT _筀L_"'g WWҀraphics/ xscale, yscale, xorig, yorig, clear, u ix = nint(x * xscale + xorig) iy = nint(y * yscale + yorig) IF (.NOT. clear) +THEN WRITE(u, 1) char(16) clear = .true. ENDIF WRITE(u, 1) char(25), + char(k), char(mod(ix, 256)), char(ix/256), + char(mod(iy, 256)), char(iy/256) 1 FORMAT('*', 6a) END C C SUBROUTINE draw(x, y) C ==== CALL plot(5, x, y) END C C SUBROUTINE move(x, y) C ==== CALL plot(4, x, y) END C C SUBROUTINE palete(from, to) C ======== INTEGER from, to REAL xscale, yscale, xorig, yorig LOGICAL clr INTEGER u COMMON /graphics/ xscale, yscale, xorig, yorig, clr, u WRITE (u, '(1h*, a)') char(19), char(from), char(to), char(0), 1 char(0), char(0) END C C SUBROUTINE mpolar(r, theta) C ====== CALL move(r * cos(theta), r * sin(theta)) END C C SUBROUTINE dpolar(r, theta) C ====== CALL draw(r * cos(theta), r * sin(theta)) END C C SUBROUTINE text(x, y, mess) C ==== CHARACTER *(*) mess REAL xscale, yscale, xorig, yorig LOGICAL clear INTEGER u COMMON /graphics/ xscale, yscale, xorig, yorig, clear, u CALL move(x, y) WRITE (u, 1) mess 1 FORMAT ('*', a) END C C SUBROUTINE mode(m) C ==== INTEGER m INTEGER u COMMON /graphics/ xscale, yscale, xorig, yorig, clear, u WRITE (u,1) char(22), char(m) 1 FORMAT ('*', 2a) END C C BLOCK DATA grablk C ====== REAL xscale, yscale, xorig, yorig LOGICAL clear INTEGER u COMMON /graphics/ xscale, yscale, xorig, yorig, clear, u DATA xscale, yscale/2*1/, xorig, yorig/2*0/, clear/.false./ DATA u/50/ END % Package for drawing fractal curves % Due to Arthur Norman (de fractal (n % recursion depth size % length of object at this depth forwardp % drawing forward or backward along base line? tHҀt$"2 PW_'g j ž筀ſ]_筀L_"'g WWҀtHҀt$"2  j _筀L_"|_@x'xWx|_W WC  !΀ڇ^(  ЀtHЀt$"2 W W_ΘЁ  | Ёz,߸_ߺ߻ߺ___ЁW 2߸zЁ2 t _2,Xz_,Z XWTRR'N   % |"xz0> ^|#t 2_E0Xj s8_3 .0Z _ __W0HZgR'^ Q2W0HjM g ̒2_8 vx>|8>| X~|x20xjg 0ԣ 20xj   WZ20xjg @0ԣ 2W ſſ"2,Θy!z2=,W ՀH4_筀L=" "2"20Xy!Ez2=0x0$ԀHt_筀L="$"2筀ž"gH"2 g,)H82 g0)H82 2$2,`20`2,f| z _|j) |"xz g' ,cc|,Y "20f| z _y|j |"xz g' Z"|0Y "" _ _822@@g,(H"@A "2,f||z_2|"2@W AЀg@H2Ё 2Ёd"݂_"_݂_"_݂߸"߻݂߸" &|݂ ݂%"݁݁|"|рtf(߸"߸"2Ё2_Ёz]' &|%"#|"|2a$'|X|׵]"\'g؁' g,)Hg؁g]H ž%",`!"!'|G|'g؁' g0)Hg؁_gH ž%"0Θ`!"" @@@ @ "2@End of file reached 16_TT:N:NULL: cannot open code=16_Illegal IMP stream number Control:Error:Input:Output:*** Failed to wind down input: : 16_ *** Failed to wind down output: : vL@/C?5@23e>e>%=}7JN1&&9 @+ \` ( *D|k#(SIA1:[IMPRTL.PANOS.SOURCE.IO]IOLIB.IMP;1 which!-side % drawing on left or right side of base line? angles % list of angles to turn through lengths % list of items (xlength xforwardp xwhich-side) % used to adjust args in next call down drawfn % function used to draw at recursion limit ) (if (zerop n) % at bottom of recursion (if drawfn (drawfn size which!-side) (draw size)) (let ((al (cl!:mapcar (lambda (theta) (times theta which!-side)) (if forwardp angles (reverse angles)))) (ll (cl!:mapcar (lambda (j) (list (times size (car j)) (eq forwardp (cadr j)) (times which!-side (caddr j)))) (if forwardp lengths (reverse lengths))))) (turn (car al)) (cl!:mapc (lambda (theta j) (fractal (sub1 n) (car j) (cadr j) (caddr j) angles lengths drawfn) (turn theta)) (cdr al) ll))) n) % Introduce some useful constants (fluid '(sqrt!-half third)) (setq sqrt!-half (sqrt 0.5) third (quotient 1 (float 3))) (de dragon (n) % Dragon curve, order n (cls) (moveto 640 256) (fractal (if n n 11) 512 t 1 '(-45 90 -45 ) `( (,sqrt!-half t 1) (,sqrt!-half nil -1) ))) (de didragon (n) % Double-Dragon curve, order n (cls) (moveto 640 256) (dotimes (i 2) (fractal (if n n 11) 512 t 1 '(-45 90 -45 ) `( (,sqrt!-half t 1) (,sqrt!-half nil -1) )) (turn 180))) (de c (n) % C-curve, order n (cls) % note how very similar to Dragon curve (moveto 640 256) (fractal (if n n 11) 512 t 1 '(-45 90 -45 ) `( (,sqrt!-half t 1) (,sqrt!-half t 1) ))) (de a (n) % Another friend of the above (cls) (moveto 640 256) (fractal (if n n 11) 512 t 1 '(-45 90 -45) `((,sqrt!-half nil -1) (,sqrt!-half nil 1)))) (de sier (n) % Sierpinsky-style space filling curve  W_8ƿ>48>ǿ j ~'?WJPWA\_'@@ڀbǾ~ j ~ ž Θƾ꿹 ?꿝gH8| ^xx-  ݍ"ݍ"߸"| | x'^ 꿶_ UU筀žž"ΘPNWXH||/|Wa` '_D} '.D`X`D`_}}筀ŽmgHƾHH ƽ|| \_H'~fT'fT@C@^@'^@+@VP'V4P4PeP[OPNWpP'v44 P6P-P WNW(P4 P4TWn'nTLLP LPLPN FP_4T3_\P~P'P% }݋("7P m݋+"'@ @ T@؋H}PRg UV݋!"qP~PP5 ݋ "V_P"Pj Pz݊"P"ZWPnP_P"Pj Pz݊"_P"P݊"PfP_P"P bP`^J݊"P;WPH N'.NXXH X ݊q"߻߸WP>M筀Ž"gHU Xeſ"꾾P@A8ǡ ħ.3FX X @@ X ݉"v߸Pu筀Ž"gHpPvHH u Tg"P}}g"o  \J jD ga8HgH8Ž=P  ſP~PP ՀhP$꽟PvPP P꽄WPnPPfPP ſ PXP^PP (P ng(_P"g)vP= Pp|j A݈"ƿ@꼪P~'P6H16H(cls) (moveto 1000 100) (fractal (if n n 6) 800 t 1 '(-90 90 0 90 -90) '((0.5 t -1) (0.5 t 1) (0.5 t 1) (0.5 t -1)) (function sier!-segment))) (de sier!-segment (size which!-side) % Draws base-line for the above (turn (times -60 which!-side)) (draw (times size 0.5)) (turn (times 60 which!-side)) (draw (times size 0.5)) (turn (times 60 which!-side)) (draw (times size 0.5)) (turn (times -60 which!-side))) (de snowflake (n) % A space-filling snowflake curve (cls) (moveto 300 256) (turn 90) (fractal (if n n 4) 850.0 t 1 '(-60 0 60 60 90 -150 0 0) `((,third t -1) (,third nil 1) (,third nil 1) (,third nil 1) (,(quotient (sqrt 3) (float 3)) nil -1) (,third t -1) (,third nil 1)))) (de koch (n) % A different snowflake curve (cls) % (this just draws an outline) (moveto 300 256) (turn 90) (dotimes (i 3) (fractal (if n n 4) 850.0 t 1 '(0 60 -120 60 0) `( (,third t 1) (,third t 1) (,third t 1) (,third t 1) )) (turn -120))) (de anti!-koch (n) % Yet a different snowflake curve (cls) (moveto 300 256) (turn 90) (dotimes (i 3) (fractal (if n n 4) 850.0 t 1 '(0 -60 120 -60 0) `( (,third t 1) (,third t 1) (,third t 1) (,third t 1) )) (turn -120))) (de x (n) (cls) (moveto 640 100) (fractal (if n n 5) 800 t 1 '(0 -90 90 90 -90 -90 90 0) '((0.25 t 1) (0.25 t -1) (0.25 t 1) (0.75 t 1) (0.25 t -1) (0.5 t -1) (0.25 nil 1)))) (de canopy!-sub (n height a r) % Draw general fractal canopy (if (zerop n) (progn (draw height) (move (minus height))) (progn (draw (times height r)) (turn (minus a)) (canopy!-sub (sub1 n) (times height (difference 1 r)) a r) (turn (times 2 a)) (canopy!-sub (sub1 n) (times height (difference 1 r)) a r) (turn (minus a)) (move (minus (times height r)))))) (de canopy (n a r) % Fractal canopy with default values (cls) (moveto 640 100) (canopy!-sub (if n n 11) 800 (if a a 33) (if r r 0.277))) (de fprandom () (quotient (remainder (random) 1000000) 1000000.0)) (de random!-canopy!-sub (n height a r) (if (zerop n) (progn (drawYqGHhǿ_g[P|'P>Hꀧ:>H~D_006L4Dx g, _ſ"WſՀhſ?ſ  ſ,ſ ſ ſ ſg?sNDL mHXg]Q|V|||PXPQ^||P0F |UH"|U`"|U"݆w"|P`^Jg'Wg'݆E"_"g) ϱN1>|t/(.x݆|(؆O}PYWxG. 2݇'"߸׵"g,6߸׵"g,(߸׵"g "(_"݆"݆" ݆"݆"݆"݇"꿱݇ "݇"݇"݇"꿍݇ "t`=^Jg'Wtg' t  ݆"݆"_t"݆"t݆"7݆"b݇"%݇ "P݇"߸t"@݇"7݇%".݇."%݇7"݇;"_t"݇<"݇C"݇I"߸t"݇H"_t"݇C"߸t"݇C"݇T"ꀾ݇\"꾁݇c"ꀬ݇n"꿿݇t"ꀚ݇"]݇"ꀈ݇"߸t"x݇"o݇"f݇"]݇"T݇"_t"݇">݇"6݇".݇"&݇"׵"݇"݈"D ^_"  <  "g "g ݇""g ߸" " ߸" g  _"΀އt WI6hN |WIih XtYXCXxW_ YXC8 ʿ~X4XWIJWr꿤P``ꁟWaCPCt.TΙh`tdVpV`'Vdd\d\q8'^d4X_l?pdW`hxXPtYPtNGC ((ʿ&l\p \U ކֿU  ކͿQ ކȿz l6VՀt"΀ކt l ݆"߸l"݆"_\uu筀žž"p ݆"߸p"p 5݆}"ſ"݆u"_uu筀ž;ž"g x 0ty6LTYat} ___|_C1-=g p4XG<݆"_"݆"_}}筀žž"g *"_2#_ " '_ "   @@@ @ "2 @ not assignedinvalid ordinal value =  Chr(unassigned pointerNIL]LLk ??? not assigned = 16_ = 16_ (not assigned?) =  unprintable real value unprintable real value (disposed) !1A"2$U5E%&6FVf(8 )HXuaqhex.Xenw '0@IR[dzO#,AIQYowEventOverflowInteger overflow Real overflowString overflowDivision by zeroExcess resourceNot enough storeOutput exceeded Time exceeded Data errorSymbol NLvalue  in data Corrupt dataData transmission errorInvalid argume height) (move (minus height))) (let ((this!-r (plus r (times (fprandom) r))) (this!-a (plus a (times (fprandom) a)))) (draw (times height this!-r)) (turn (minus this!-a)) (random!-canopy!-sub (sub1 n) (times height (difference 1 this!-r)) a r) (turn (times 2 this!-a)) (random!-canopy!-sub (sub1 n) (times height (difference 1 this!-r)) a r) (turn (minus this!-a)) (move (minus (times height this!-r)))))) (de random!-canopy (n a r) % Fractal random canopy with default values (cls) (moveto 640 100) (random!-canopy!-sub (if n n 11) 800 (if a a 20) (if r r 0.24))) fin $ .key filename $ . Execasm $ . sample command file to compile, load and run assembler programs $ asm32 $ link $ $ .key filename $ . ExecF77 $ . sample command file to compile, load and run Fortran programs $ f77 $ link f77 $ $ .key filename $ . ExecPas $ . sample command file to compile, load and run Pascal programs $ Pascal $ link pas $ $ .Identify ADFS/NFS Panos Welcome Installation Version 1.10/03 $ .Key Dev[ADFS] Model[] $ .Help Install Welcome disc onto ADFS/NFS $ .Help $ .Help KEYWORDS $ .Help $ .Help -Dev Either NFS or ADFS (default is ADFS) $ .Help -Model Either ACW (workstation) or ACC (Co-Proc) $ .Help -Force Overwrite existing files $ .Help -Abandon Stop on first error $ .Set Program$Force False $ .Set Program$Abandon True $ .Set Program$Confirm False $ .Set Program$Identify False $ .NewCommand $ Create :$.PanosDemos -Dir -NoAbandon $ .swd :$.PanosDemos $ Copy dfs::0.*-pas,dfs::0.*-f77,dfs::0.*-c :@ $ Copy dfs::0.*-asm,dfs::0.*-lsp,dfs::0.*-cmd :@ $ Copy dfs::0.data-dat,dfs::2.ntsFor loop cannot terminateIllegal exponentArray inside-outString inside-outIllegal parameter Out of range Array index () not in boundsSwitch index (Illegal event Charno  does not exist is not a character valueResolution failsUndefined valueUnassigned variableSwitch label (Corrupt control variable I/O error Input endedIllegal streamNIL pointer usedReference to DISPOSED object'Zero or negative argument for logarithmSignificance lostx MOD  is not permitted Missing case!Negative argument for square rootDisposing NIL pointer Interrupt 16_$Inappropriate parameters for DISPOSEVariant record misusedERROR:Diagnostics being sent to Executing  IMP Pascal 'C' called from line in  starting at line of module Stopped at line  in "b|!.@< #0SIA1:[IMPRTL.PANOS.SOURCE.DIAGNOSE]PANDIAG.IMP;1|  ݃""  ݃""  ;m"lg؃'8gmH8ž="舎3׳  ׳  ׳=5||m} } }߰m"lg؂' 8gmH8__| P ;m"lg؂'8gmH8ž="|ꀟ  ݂}"߸"|  ݂l"_"|_  T݂d"H  =݂c"2  ݂e"| ݂Y"|2WIN |WIihXXW YXC8 tx4+$YxCG0z Yx*| 4x|4x~\xa|4|||꿈Y|G m|_xvxCΙCC Win |WhIHXXW YXC8 tx4 iqK4x|4x~\xa|4Y|W|W|  "2 @----> Initialise ----> Stop----> Exception Exception ----> Exception passed on ----> Diagnose----> Diagnose passed on----> Describe frame----> Describe module data ----> Unwind----> Unknown handler type(/SIA1:[IMPRTL.PANOS.SOURCE.DIAGNOSE]LLHAND.IMP;12 Ιץ舎""2 "2*******continue*********l >/SIA1:[IMPRTL.PANOS.SOURCE.DIAGNOSE]SIGNAL.IMP;1*-rif :@ $ Copy dfs::0.menu-rif,dfs::0.typit-rif :@ $ Copy dfs::0.gdem-rif :@.gdem-rif $ Access :$.PanosDemos.* rw/r $ .delete Program$Force $ .delete Program$Abandon $ .delete Program$Confirm $ .delete Program$Identify $ . $ . Welcome programs now installed on $ . Type WELCOME to run them dfs::2.*-asm :$.PanosTests $ .Delete Program$Force $ .Delete Program$Abandon $ .Delete Program$Confirm $ .Delet/* * Example C program: * Sieve of Eratosthenes - simple minded implementation */ #include #define MAXLIMIT 10000 #define TRUE -1 #define FALSE 0 typedef int bool; main() { bool is_prime [MAXLIMIT+1]; int j, k, limit, factor; printf ("Type limit for prime numbers (2 to %d): ", MAXLIMIT); scanf ("%d", &limit); for (j = 2; j <= limit; j++) is_prime [j] = TRUE; factor = 2; do { if (is_prime [factor]) for (k = 2; k <= limit / factor; k++) is_prime [k * factor] = FALSE; factor++; } while (factor * factor <= limit); printf ("Primes from 2 to %d are:\n", limit); for (j = 2; j <= limit; j++) if (is_prime [j]) printf ("%d\n", j); } MODULE Sieve ; Example Assembler program: ; Sieve of Eratosthenes - simple minded implementation MaxLimit EQU 10000 AREADEF Code, [read,code,pic], byte AREADEF Data, [write,data], double ; ; specify external (Panos) procedures to be used ; IMPORTC XBlockWrite = 'IO' . 'XBlockWrite' IMPORTC XReadByte = 'IO' . 'XReadByte' IMPORTC XWriteByte = 'IO' . 'XWriteByte' IMPORTC XFlushOutput = 'IO' . 'XFlushOutput' IMPORTC XStringToInteger = 'Convert' . 'XStringToInteger' ; ; various useful constants ; TabChar EQU 9 ; ASCII TAB code ; ; Define newline symbol (*N) in strings to be Panos standard (10) ; NewLineChar EQU 10 NLSYM NewLineChar ; ; define the data ; ; store the array as a bit array in the static area AREA Data DEFSB $ ; for x(SB) reference to vars limit ALLOCD 1 j ALLOCD 1 isPrime ALLOCB ((1+MaxLimit)+7) / 8 ; implement bit array ; define the code AREA Code ENTRY ; program starts here ; put out prompt for data ADDR Msg1a+1, TOS ; address of data to output MOVZBD Msg1a, TOS ; length of data CXP XBlockWrite ; print it MOVD =MaxLimit, R0 ; get integer to print BSR WriteInt ; output it ADDR Msg1b+1, TOS ; address of message part 2 MOVZBD Msg1b, TOS ; and length CXP XBlockWrite ; output it CXP XFlushOutput ; ensure it  Wg؂'8gH8__9]'~ W H2_|x_t'dx `'xhhvpp Dp7p6lpvpptzptWhWpNdh'hdlh꿼#ph꿵Wxnx꿠d_`t'_& +&%x" ݁x&'Cxff|_P'ppP P ݁Q~||| |8 ݁i|ʀG|xpFt @Z|pQxx>ttN'xpQ'~pe ' _> > =6|j2I j 2   |j2݀8 @|j _'nN{||2W 8Θ="gH2"2  _"2" "2Heap failure -- Cannot extend heapHeap Corrupt 3Heap Corrupt 4Extend heap logic errorV@.\`,?)SIA1:[IMPRTL.PANOS.SOURCE.CORE]HEAP.IMP;1> , >xt4x @$xtj>x t @$xtjt \ z_ > >x_lꀁ4xxx'Fll[p>%lGpx@$6x pxN 0?xx@$ @$xlhN#\>>xz - h >;xdুd0X7žz0gXHԢ gHJΘ. 7 >dx!@$6x>;6dgd0HX@lz-Θ+_Nl?Ž"`gH` Θ0`X0'Θ` gaH  W H82X\ z_ > >4N @0?N#\>>z - >;ƾ_ž?ž"'Θ` gH z0'g`H gHJΘ. < >辄@$6>;6g0C gH82 筀ſ"ſ"2 筀ſ"ſ"2N3>>0} >  "2uZ'R((*+SIA1:[IMPRTL.PANOS.SOURCE.CORE]REALIO.IMP;1'px'ހ|t_pj _tN#p 09Wp7p3 & Xt ,pWp-ppWgoes out before the read is done ; get the number and store it BSR ReadInt ; call subroutine to get it MOVD R0, limit ; initialise the array k EQUR R1 ; use register variable for speed MOVQD 2, k ; loop count set_loop SBITD k, isPrime ; set each bit (1=true, 0=false) ADDQD 1, k CMPD k, limit ; done? BLE set_loop ; loop until so factor EQUR R2 ; in register for speed lim EQUR R3 ; and again (inner loop limit reg) tmp EQUR R4 ; temp for calculations MOVQD 2, factor check_loop TBITD factor, isPrime BFC next MOVQD 2, k MOVD limit, lim DIVD factor, lim clear_loop CMPD k, lim BGT clear_loop_done MOVD factor, tmp ; calculate factor * k MULD k, tmp CBITD tmp, isPrime ; clear the bit ADDQD 1, k ; round again until done BR clear_loop clear_loop_done next ADDQD 1, factor ; next value of factor MOVD factor, tmp MULD tmp, tmp CMPD tmp, limit BLE check_loop ; output message ADDR Msg2a+1, TOS MOVZBD Msg2a, TOS CXP XBlockWrite MOVD limit, R0 BSR WriteInt ADDR Msg2b+1, TOS MOVZBD Msg2b, TOS CXP XBlockWrite ; final loop MOVQD 2, j print_loop TBITD j, isPrime BFC next_p MOVD j, R0 ; pass param to WriteInt in reg. BSR WriteInt ADDR @NewLineChar, TOS ; WriteByte (NewLineChar) CXP XWriteByte next_p ADDQD 1, j CMPD j, limit BLE print_loop ; All done. ; Set success status result and return removing (unused) parameters MOVQD 0, R0 RXP 8 Msg1a DCS "Type limit for prime numbers (2 to " Msg1b DCS "): " Msg2a DCS "Primes from 2 to " Msg2b DCS " are:*N" ; subroutines ; ; ReadInt ; ; Simple-minded routine to read an integer from the input stream. ; ; Leading white space (space/tab/newline) is ignored. Everything ; from then on up to a space, tab or newline is buffered (maximum ; 20 chars, rest is ignored) and passed to the Panos routine ; XStringToInteger for conversion. If the number is invalid then ; this will signal an error and the program will crash. ; buff_size EQU 20 index EQU -4 ; offset of index in frame buffer EQU -4-buff_size ; offset of buffer in frame frame_size EQU 4 + buff_size ReadInt ENTER [], frame_size ; reserve space for index & buffer skip_blanks CXP XReadByte CMPB R0, =' ' BEQ skip_blanks CMPB R0, =TabChar BEQ skip_blanks CMPB R0, =NewLineChar BEQ skip_blanks ; initialise buffer index variable MOVQD 0, index(FP) ; no bytes in buffer yet read_stuff ; insert the character, if there is any space MOVD index(FP), R1 ; pick up buffer index CMPD R1, =buff_size ; full? BEQ next_char ; skip if so MOVB R0, buffer(FP)[R1:B] p pt -p'#&'pzpWp poN#ppWpp gqH82@ ?A"@@"2 "2 )SIA1:[IMPRTL.PANOS.SOURCE.CORE]ITOS.IMP;1'lx'ހ|_l_88>tpNp z 'p7p'p0pllpltǡGz'N#ljlll l>rN#lll gmH82 筀ſ"ſ"2 "2 $)SIA1:[IMPRTL.PANOS.SOURCE.CORE]ITOX.IMP;12 Cpk_wA8    Wd-!d$'*-037<H @C  %     z  R_ # Kt/ mmH.# +Ep s& M(n*x-*0*0of{1 2T3]|D# EHK$'!H"NR  9kVY2  v <F[IL\y "#!o kv ILv^b  #  >Tc`b  g @C  \!`l"!y !o"Tn"y #o#y ; store char ADDR 1(R1), index(FP) ; save incremented index next_char CXP XReadByte CMPB R0, =NewLineChar ; at end of line yet? BEQ read_done CMPB R0, =' ' ; hit a blank? (-> terminate) BEQ read_done CMPB R0, =TabChar ; or a tab? BNE read_stuff read_done ; now call XStringToInteger to convert data MOVD index(FP), TOS ; length of buffer ADDR buffer(FP), TOS ; address of buffer CXP XStringToInteger ; call conversion function ; The conversion must have succeeded if we reach here. ; Remove stack frame and return (result is left in R0). EXIT [] RET 0 ; ; WriteInt ; ; Print an integer on the output stream. Done by ; a simple recursive algorithm (which doesn't work for ; negative numbers, but param here will be positive..) ; WriteInt CMPD R0, =9 ; check size of number BLE one_digit ; jump if only one digit to print MOVD R0, TOS ; save original number QUOD =10, R0 ; divide by 10 BSR WriteInt ; print higher digit(s) first MOVD TOS, R0 ; restore original one_digit REMD =10, R0 ; get single digit's worth ADDR '0'(R0), TOS ; convert to character and push CXP XWriteByte ; print digit RET 0 ; all done END heading 1 "Panos Welcome Package" items 5 option 1 heading 2 "Pascal" option 2 heading 3 "Fortran" option 3 heading 4 "C" option 4 heading 5 "Assembler" option 5 file "slide" "Slide show" heading 2 "Pascal Welcome Programs" items 5 option 1 file "perat" "Sieve of Eratosthenes" option 2 file "typit -tfile perat-pas" "List Sieve program" option 3 file "clock" "Clock" option 4 file "typit -tfile clock-pas" "List Clock program" option 5 file "typit -tfile glib-pas" "List graphics library" heading 3 "Fortran 77 Welcome Programs" items 5 option 1 file "ferat" "Sieve of Eratosthenes" option 2 file "typit -tfile ferat-f77" "List Sieve program" option 3 file "fourier" "Fourier series" option 4 file "typit -tfile fourier-f77" "List Fourier program" option 5 file "typit -tfile plotlib-f77" "List graphics library" heading 4 "C Welcome Programs" items 2 option 1 file "cerat" "Sieve of Eratosthenes" option 2 file "typit -tfile cerat-c" "List Sieve program" heading 5 "Assembler Welcome Programs" items 2 option 1 file "aerat" "Sieve of Eratosthenes" option 2 file "typit -tfile aerat-asm" "List Sieve program"  x0123456789ABCDEFData: ERROR:FalseTrue Executing 3" `4444444444444aaafAfffFaaaaAAdAaf3" }4.V43444444444444444affadfffaaFaafffffafdaa13????????????????@@@,@0@4@8@<@@@D@H@L@P@T@X@\@`@d@h@l@p@t@x@|@@@@@@@@@@@@@@@@@@@@@AAAA A$A(A,A0A4A8A>>> >(>,>4>8>D>P>X>\>h>t>|>>>>>>>>>>>GGHHHHIJJTUVHWdWXpYPBh=l=p=t===========GGHHHHIIJJJJJJJJJJJXU`UVLWhWxW|W XXXX X$Xx=|========>@>L>d>p>>> _DecodeArg DecodeArg_ProgramProgram_StoreStore_IOIO _TimeAndDate TimeAndDate_FileFile_ErrorError_ConvertConvertdatadebug XSWriteByte XErrorStreamStopAllocate XGetStateArg GetStringArgExpand XGetStringArg DeviceType CloseStream RenameFileSetFileInformation SubstituteIsWild DecodeEndGetFileInformation PANOSFile DeleteFile InitDirReadPhysicalDirRead EndDirReadCreateDirectory FindOutputSaveFile CreateFile SBlockWriteLoadFile FindInput SBlockRead Deallocate ErrorStreamNameGetErrorMessage ControlStreamGetNumberOfValues XArgumentInitVerbosityRequiredSwitchRequired XWriteByteBinaryTimeOfTextualTimeXStringToCardinalDate(  , 88DHPL  x, X  $T 8&0 0"2W _88J7 7-"8h2 إ "2 8N8N5"8+ Z8+05"8+A# 5"2 إ "2 "2"إ" ="="Time TimeAndDateXOSByteBBC FindOutputIO SWriteByteOSWord XBlockWrite SBlockWrite BlockRead XWriteByte FindInput CloseStream XSelectInput XSelectOutput XDeleteFileFile SetFileOffsetXBytesOutstandingStopProgramSignalHandlerAllocateStore Arguments DecodeInit DecodeArg GetStringArgCurrentHeapEnd $%<`<: O$TdTp(PYtP|^x,0؀PTfg'?|/|"ߺݕ_x"_ݕ_|""\\_ſpg*ݕ|ݕ"|7\筀~筀~筀__筀xߺߺߺ___߸߸""_ƾ|2@"_xx" |;x?09 3@"'x_88>|ߺx߸=" x'~x|9d||YWa'k@555"|1` +_e筀w|" x|``\`@" _" @555"_" P>x Cx">!?00>>+x&t">0 > 0>+%tut筀U" ؐ@>xِ0@xz@"ސ9 W|AoΘAoSؐX AoΘAo'^P||@"|EEp ߸>_ >߻>u@&zq(#q0ُ q>k@*s(> 0؏@R @ @0؏i/>xγ>!ُK@^ @>2y0ُ% @># @"筂 筂Ҿ"?@w 00 ?񙙙>>|"0@w ?񙙙>} |q|}_" @"|Jx ߸"穀ߏ8>x_006|1 3 "2َ$W|no nonono}x"||_"xǡx@5555"W|Dh _߻ݎm|"߸T; |_Ex|s|' |z|[W|'n||M| |ߺ"x1xxxxpp8|ލ|ݍ' #||Xݍ]|ݍ"|p4|ލ| ||CݍE|ݍ"|ꁱp4|ލ_| ||CݍpE|ݍ{"|vp-4|Sލ$|Y ||CݍSE|ݍ_"|;__'.wxxz\w<xxxxx/xތx x|SU|݌"|9xxPl،|Σ |Z-]]|݌"|݌|]|݌"|xgx筀s|]|݌"|wHw ݌|]|݌"|݌|]|݌"||ދ| |W|KM|݌q"|݌o|]|݌y"| |]|݌n"|__݌f|]|"="_"2 / "2x| < :}(6Hg8_8g.8+gJ8gc8 Ñ~/إ="x2 إ 5"5"x =5"  ynإ5"5"2 +WWc@x" " p_8pW8c'a@@ h 8apإ'5"5"_Jإ5"x5" إ 5"إW8c'aE5"إ'5"5"22"2"2"22 ġaJ#ġz8XAXa#822߹"2 8=|"?|8v|2 _88J 7 8p82 _8w 8x82ׅ " "2 W_8w !_"wo8a!o2 "2 ""8 ?== "02ץ "2  ""8 ?== "02_0_(  0rG  (r0(t"_81Z g 8stZ8#0g8n 2ץץ "2ץ "2 ץ "2 W"pW pWW _  W   " _8 ").p &80W _"80燀p8R80W  80 p" 2 W_88J,8J"7X/ _D7:8O8ZWG8J/_WG8J7_2 W_8ow _w 8h'2W _88Zw_*/w _w/_ 8Fْ2 _8!PJΘ X0 (_g5" Θ-" X)8)Z_A<꿱_/! __!  _2 " 2ץץ " 2 ץ " 2 Xׁ8J7 7(8d_<2 Xׁw /w8n_<2 W_0!Z>Zg6 Z_. 08b 0J.2_0!ZW c8 "W_"W!Zn 08q(2 2__" +p _ cء W8NGW W8' @ z)ǡ(,8' @ z)8 (NG꿽W8' Ah #z 6hqp;ǡ( W8' A&z%" إ" &hW8' rth0 ǡ(N#N;2  W)xzNy إ"(Z4W0' @ إ"W0' CC*%N#x إ"ד <, #_8(85"_J6J2 0x1W8' 8xnN0 NW0g W"N0 "NW0 ' " NW0 ' "2__إ__߹_߸"إ@" 7_ľ8|X>@"筂筂bي@1%"?@w 00 @$>؊E@%|"0@w @$>]||]Ҿى@5"?@w 0 @$>ى @%|"0@w @$>]|K|]筀V" "?@w 0 >|"0@w >]||]筀V" @" [>\>Q>|`X`/X !߸\; | @" &ĥ?񙙙ĥ?񙙙ْ@g_"_筀B筀B筀B筀B<<_筀"_<<筀B筀B筀B筀B_筀"________筀"________筀"<____<<_筀"_<<筀@筀@筀@筀@<筀"<____<<_筀"_<<____<筀"<筀B筀B筀B筀B___筀"_______<筀"<筀@筀@筀@筀@<<_筀"_<<____<筀"<筀@筀@筀@筀@<<_筀"_<<筀B筀B筀B筀B<筀"_____<<_筀"________筀"<筀B筀B筀B筀B<<_筀"_<<筀B筀B筀B筀B<筀"<筀B筀B筀B筀B<<_筀"_<<____<筀"߸"________߸"__"_߸"߸_"߹߹"߸筁r筁筂_筁r筂筂þ؅Ծ@p__" p"?@w 0>pl"0@w >]lIl]Fp"?@w 0>pl"0@w >]ll]ߺ" ߸_" p"?@w 0 ?GzH>pl"0@w ?GzH>]ll]ߺ" ؄@pل@pz߹_" 筂筂P筂 筂ߺ" |Xg؅' X g؅' Xg؅' Xg؅' X$g؅' X-g؅' X6g؅' X?g؅' XHg؅' XQg؅' XZg؅' Xcg؅' Xlg؅' Xug؅' X~g؅' Xg؅' Xg؅' Xg؅' Xg؅' Xg؅z' _|_xރ|؅d Σ||WCYY +ރ|؅4WC\]Ǡ x||EXE`Eh|XEX>|hEhĥ?񙙙|`cE`@"|hCBhP`6B`HX)BX@EXE`Eh4|X EX@E@H|hEhPEP|`ѾE`HžEHM^m@"߻"筀"݄|E|݄"|筀"݃|E|݄"||E|݃"ǽ݃|E|݄"||W@x. "F|Ux"|Ux""Θ? | E|݃"ǽ݃W|M|݃"|W|WHx "F|Ux"|Ux""Θ?$|#u|݃"ǽ݃֗|u|݃إإ إ _"إ9إ/إ'إ إإ "إإuإbإRإDإ"٥\٥"إإإإ"٥b٥٥Y٥٥إ"٥j٥٥٥٥إ"٥٥r٥٥ ٥ إ$"2 ZΙ5z$"j <_2 2߹"إ+"إ=,"إBj"إQ"إA"إ.A"إMp"إ/"إM"إL<"إP"إ7"إ?"إ4R"إ*"إ="إB"2 t}|xإ|xإ!eإ13"(_ _إ__إ|x"׵ ߺ"׵ إ"׵ _"߸߸"إ_"4׵ ߸_Հ`إ|Հ\"z߸ إ1_" $t2lW  }|x}|,D T 7T_8T+߸5إ"  ߸5" _T8jt lWЀh(إ|Հh5"  _ "__  "z إ"߸"W(Ѐh5إ1߸=" إ.B߸ܥ"KD+T D ΘD45"Z,2.5إq߸ܥ"$ إ|x_"إ|xإ"߸ ՀTՀdz5ՀD إ|x"z إ߸"5 9߹߸ _p ߸"p! إ ߸ܥ"5إ,߸ܥ" إ&߸ܥ"l2ՀD " D WЀDЀ@߸_ՀD " _߸إ|< "_$_2 _ _(T    ߸_إ|Հ\إ " Wإ:إ.إ|Հ\"zإ|<߻!"8إ|<z:_إ|Հ\"إ|<߻!إ|<"إ|<إ|Հ\"_|T_(߹߸_|إ|<"إ|Հ\إ)߸ܥ"| 8z>dՀTإ|<"4h0ꀃ׵ 0_Hإ|ՀH"L__إ|ՀH"ʀKإ|ՀH畀D"8ܡDإ|ՀHإM߸="_إ|ՀH"0h0|Հdz"j( ߹߸߸_xإ|Հ\߸\"x إ|Հ\إ|<"zإ|Հ\إ"]߸"S 畀@<畀@,إ|Հ\"(J2إ "إ|<"_"إ|Հ\"_"إ|<إ߸"2t }||}|xإ||="إ:إ.="z="إ|xإ||إ|Հh"ՀD="߸_ՀD=" !ՀTإ|x"߸_إ|x="_t2 إ|Հhإ| " 4t0ꀃ׵ 0_إ|ՀH"L__ إ|ՀH"ʀKإ|ՀH畀D"8ܡDإ|ՀHإ߸="_إ|ՀH" 0t0|2l }||_إ|Հ\=إ|ՀHxإ||" z߸إ._" ;ՀD="߸_ՀD=" %ՀTإ||"߸_إ||="_l2 "!إ|Հ\"||Wpx "F|ux"|ux""Θ6?$|"U|݃"ǽ݃|e|݃"||W`x8 "F|ex"|ex""&?|R"R H|z _ _'"R '"R ___" "2S! @   rawvdu:@ O'Clock       Quarter Past    Half Past    Quarter to         Minute     Past    To          vdu:One Two Three Four Five Six Seven Eight Nine Ten Eleven Twelve Thirteen Fourteen Fifteen Sixteen SeventeenEighteen Nineteen Twenty Options ...  Options ...   Digital display (Y/N) :    Verbose display (Y/N) :    Tick (Y/N) :   Chimes (Y/N) :   INPUTOUTPUTPlease set the time before using this program. . . ?47MNT ~ Gk6 Y $.panosdemos.clockCLOCK^`{l $4D0+RETURN(4`6DONG( (D\E7TICK4@TXSMOVE4YCIRCLE4AlFCONVERT%s CALCULATE0,,, lTHINHAND(!DIGIT(D 8hVERBALZ$.8>Z2lW,|p_0_( = " _p $p="=" 0WGLY߸__=t" W7إ| =" (߸ =" W(=" t"0j߀-J="إ "0l2$W -"_08j30/>Z X/D >ZX/D _?M0 82إ  " "إ "2 "jJ  "82 l W|x|t5tx"F --(  ߸_p5إ %"z5إ/߸"_8pp %5"z5إ@߸"8j5إ[߸ܥ"8j p _8l2"إ " "r ?_{" "_"$ ߻"߸$"߻"_" "_"2 _0W|4 ,@ wl,@=@ׅ<ׅ<< 8 ߸_lׅ$ إ "l *8p-=ׅ$W "j_ T0j8_ׅ$W "ꀘ4DW@ ׅ<ׅ84ׅ$W "j4_ׅ$W "4(0jK4 D8 ?0j:ǡ 9-%ׅ(t"tW(CtW tp߀TA0z_P0 44d_ _p_T_P4 N4|"jzW/4J(W4|-"j ߸-//|GY"j`>`_08jI0D|-`t"8L> _ z  t/꿸`"8j|" 8j24*W@ <84$ "j>(4TTd=4 7("8jP $W@ ߸__P$ ߸"8z8\T Jd%,  0 <,$ "!ŀ@Jp$  ""8z8p282_߹"# "z~"2 "ze"2 "zJ"2 8+"2p}|| z Θ إ " Θ إ  "إ||" 6l8 إ "8lu إ||"߹""J " "J" _" " إ'"_"p2$` }||}|x}|t ǡj =" ǡzl=hإ|tlإ|xpإ||" j<إ|"2 B" "_"_2B"" ""2B"" NHB<2B" "2B""2B" "2B"" "2B"" "2B" """$ ",("2$B"_______߸߸"2B"________߸"2B"" RL2B5555" z 'v W s- ;%筀st"xss | ;||q|2Fg_|/|"߸ -߹&ߺ߻r߻" l" h|2@"z W'n#ނn ;قc |'Sq؂GWsC؂=SqFg|/|"h a[UOI C$=(8,30.4)8$<ŀ@r" l" d|28@"z 'fW|Gh"Sځh(λ؁|HhHqgBhBg" z 'V z W'N ;;؁*n ف>oλف6pWscـ.qn " hr||\|2Bg_" z '~ _ 筀ot"xttN6p6|02R '" R ___"  "2Rawvdu:>)>4 (3sIa~HPUQ GLIBSETUP(!RAW\+DRAW2L\6TWO8t=MODE,CPLOT$KPALETTE SWINDOW,['GRAPHWIN$eOCLS k_CLG qoCOLOUR,wGCOL,~TAB,DEFCHAR,CURSORON\ CURSOROFF\#ORIGIN$?INKEY<8@\SOUNDX"LFILL8\ENVELOPEX"PFI0"POINT@88PPPP(HADVAL@0LH "4#D*T1gK}_.DYnCPVAL RES|VAL2VAL1 RES|VALVAL THIRDSECONDFIRST ACTUALLOGICAL TOPYRIGHTXBOTTOMYLEFTX TOPYRIGHTXBOTTOMYLEFTX VAL VAL2VAL1 YX H,G(F$E DCBACNUM YX PARM RESxAtB!sLENGTHPITCHVOLUMECHANNEL THIS]rRESlOFF ACTN@M<L8K4J0I,H(G$F EDCBA THIS]rRESlOFFhACTYX THIS]nREShPARM RESxAtTEMPpB!oTW ]Θx8  8g8ΘHx2 a"`g؏U'8gaH8' yq>|8tإ"إ|t"  _إ||إ|t߸=" _ ܥ" `2  " ܥ" 2p W}|4 %"-"J_1"-"إ'"إ 4""j=5إ{=|"j)Xpk_DY:p+_N_&8z߸aإ!?_=" p2  |"z إ&b߸ܥ"|߸_ܥ"|t2$  " "8, ߻"(4 ߺ"0_ ߻"20_2_߹" "2  2إ  2W -"_0!Z6Zm.ġ*o06ZY.8N P 1S T 'إ  /إ  &߹"إ  إ* 8 = = 0u2  J"80_/ 8 إ  ?s إ- 0_/ X0  8z߸N=zh/z_=zR/d2X !J-8%0_/ "8 - ?t0_/  Z00 A0#  2إ0إ "2  ߹"/ _8ǡw ǡw 8Z2 "2 %"x_(GxZ.ZI%ġ*w(.Z5%8N P 6S T -إ 5"6إ 5"+߹5"إ 5"إ*5"8 =5" =5"(k2  J"80_/ #8إ ׅ "?p إ-ׅ "0_/ X0ׅ "8z߸N=z2/q_=z/[2  2_߹"l}|p__׵  x"z إ!߸"x_ ^׵ ߸ tإ|p"z߸Hإ%"_"إ|p"zإ|pإ I߸"l2x w 9x@x< ; Ǔ@J8Ǔ@ Ǔ їрqр;s;_WЀ2рq{Ѐ2ՀЀ@@ 2ՀՁ"Ѐҁ 22$ @}}"|}}" |j]"\g؍' 8gHg؍' g]H8 |' W ſſ"z 2" | 2'x x| 2W GJH I~| 2@_?A" @g،'8gAH8 '  8j ǡ=4,> ,pju" 2 8j ǡ=z׀t0>$0pju"2 \_8v>|18>|~xgx-J'x`xxM gH82 Θq06|%76| rxgx J gx`r0[2 \_0V6|106|rxgx-J'x xXxM gH82 Θq06|%76| rxgx J gx r0[2|p e_XpNRXpN:Fp =r;_XpU)g_qk!GLg_ΘpkGL||z)w  Ӂ  D y   _筂_"$ AA2w s! sp(WH v||j*|" xz '  v$t_筂t"PW j _'gž筀@ſW_筀L_"'g WW4H4 "2  j _筀L_"|_@x'xWx|_W WC R!΀ڈ(  4H4 "2 PW_'g j xž筀ſT _筀L_"'g WWҀtHҀt$"2 PW_'g j ž筀ſ]_筀L_"'g WWҀtHҀt$"2  j _筀L_"|_@x'xWx|_W WC  !΀ڇ^(  ЀtHЀt$"2 W W_ΘЁ  | Ёz,߸_ߺ߻ߺ___ЁW 2߸zЁ2 t _2,Xz_,Z XWTRR'N   % |"xz0> ^|#t 2_E0Xj s8_3 .0Z _ __W0HZgR'^ Q2W0HjM g ̒2_8 vx>|8>| X~|x/T@ _-T@$ 7_إWTM "   W %"|_06Z.%" g V|JP6Z."|=_86Z.ǡ?G>ZX'8S| 0|_4 _t_l_p|_@_@ x|(Z "88b"="_ߺ"D"Wz/_//f /  _|_|"/ /? " ꁰ" ꁩT " ꁞcx lxx 8 x:x x$x:x4<ׅx" 5 3|);|;|c| " t  |J" h  |ׅxׅxׅx" # Pp "$_ίWGd " ꀰl JxxZ1+x_/   _0 0_116` " c|'<|'<|'d| PΧNHN +N  _Ŀ2  8W8_ίdW8_ίW_2 W  t88 8tg('m(N(_ίd#(_ί! -"  702 _ "  _ "  _" _" _" _"  _" ߻20xjg 0ԣ 20xj   WZ20xjg @0ԣ 2W ſſ"2,Θy!z2=,W ՀH4_筀L=" "2"20Xy!Ez2=0x0$ԀHt_筀L="$"2筀ž"gH"2 g,)H82 g0)H82 2$2,`20`2,f| z _|j) |"xz g' ,cc|,Y "20f| z _y|j |"xz g' Z"|0Y "" _ _822@@g,(H"@A "2,f||z_2|"2@W AЀg@H2Ё 2Ёd"݂_"_݂_"_݂߸"߻݂߸" &|݂ ݂%"݁݁|"|рtf(߸"߸"2Ё2_Ёz]' &|%"#|"|2a$'|X|׵]"\'g؁' g,)Hg؁g]H ž%",`!"!'|G|'g؁' g0)Hg؁_gH ž%"0Θ`!"" @@@ @ "2@End of file reached 16_TT:N:NULL: cannot open code=16_Illegal IMP stream number Control:Error:Input:Output:*** Failed to wind down input: : 16_ *** Failed to wind down output: : vL@/C?5@23e>e>%=}7JN1&&9 @+ \` ( *D|k#(SIA1:[IMPRTL.PANOS.SOURCE.IO]IOLIB.IMP;1"" إ *" إ4"  _=" إD" _M" ߻T" إ\" ߺe" ߺk"  ߹q" _u" _z" _" إ "  ߻" $إ" (إ" ,ΘΘΘΘ ΘΘΘΘΘ Θ$Θ(Θ,٥l߸߸"  _$2_߸߹"  ,&& 8DP&&&& &T&$di,tl}(( 0T((l((($l($CopyExceptionsPanosMCICharCodesDecodeArgProgramSystemTypesStringsStorageOSStorageStoreIOCopyMTimeAndDateFileFileUtilsStubErrorCrudeIODateCheckFreeTimeConvert  ~ w)<"  ? 4 R CZ"B ..Lj q4|s\L B 7 %      u   G, ,  \  R  u  k X  X   4 O /     g   ' 0   7 F f m ,$Q8&j - tF/W/   0%"""""""""" " " " " """""""""""'6l |_@hGp'Bh2/   o 'p2" 222'2'22'o2 "*2: 2 AWAAA 2_"oYWC@ 22_ 24   7Cw   !$j    <*-1  )agmB q"4Z| 3 4 6Q :   u > /" X     @ DGJMR U G u WDZ_ "  \  W_8ƿ>48>ǿ j ~'?WJPWA\_'@@ڀbǾ~ j ~ ž Θƾ꿹 ?꿝gH8| ^xx-  ݍ"ݍ"߸"| | x'^ 꿶_ UU筀žž"ΘPNWXH||/|Wa` '_D} '.D`X`D`_}}筀ŽmgHƾHH ƽ|| \_H'~fT'fT@C@^@'^@+@VP'V4P4PeP[OPNWpP'v44 P6P-P WNW(P4 P4TWn'nTLLP LPLPN FP_4T3_\P~P'P% }݋("7P m݋+"'@ @ T@؋H}PRg UV݋!"qP~PP5 ݋ "V_P"Pj Pz݊"P"ZWPnP_P"Pj Pz݊"_P"P݊"PfP_P"P bP`^J݊"P;WPH N'.NXXH X ݊q"߻߸WP>M筀Ž"gHU Xeſ"꾾P@A8ǡ ħ.3FX X @@ X ݉"v߸Pu筀Ž"gHpPvHH u Tg"P}}g"o  \J jD ga8HgH8Ž=P  ſP~PP ՀhP$꽟PvPP P꽄WPnPPfPP ſ PXP^PP (P ng(_P"g)vP= Pp|j A݈"ƿ@꼪P~'P6H16HYqGHhǿ_g[P|'P>Hꀧ:>H~D_006L4Dx g, _ſ"WſՀhſ?ſ  ſ,ſ ſ ſ ſg?sNDL mHXg]Q|V|||PXPQ^||P0F |UH"|U`"|U"݆w"|P`^Jg'Wg'݆E"_"g) ϱN1>|t/(.x݆|(؆O}PYWxG. 2݇'"߸׵"g,6߸׵"g,(߸׵"g "(_"݆"݆" ݆"݆"݆"݇"꿱݇ "݇"݇"݇"꿍݇ "t`=^Jg'Wtg' t  ݆"݆"_t"݆"t݆"be hl 4o R /s  vy |3GM k f 7 F1 4 " g O /  " ' m* 7 F  :-  /"$.B  \1 ( <Modula-2 exception - CASE index out of rangeAssigned value out of rangeArray index out of rangemissing RETURN in functionHALTBacktrace:End of backtrace Failed to find module - stack corrupt? Offset in module '|SYSTEM.GFTSYSTEM.GFTLSYSTEM.GFTUPB8DP@lALLOCATE failedDEALLOCATE failedd|HX\Copies files, directories and/or devices.*N*NKeywords: (Upper case indicates minimum abbreviation).*N-FROM List of objects to be copied (possibly wildcarded).*N-TO Destination object name (or wildcard string to match FROM string).*N-CONTENTs Copy directory contents (always false for Backup).*N-Delete Delete the source after copying*N-Exact Sets the datestamp or exec & load addresses of the destination*7݆"b݇"%݇ "P݇"߸t"@݇"7݇%".݇."%݇7"݇;"_t"݇<"݇C"݇I"߸t"݇H"_t"݇C"߸t"݇C"݇T"ꀾ݇\"꾁݇c"ꀬ݇n"꿿݇t"ꀚ݇"]݇"ꀈ݇"߸t"x݇"o݇"f݇"]݇"T݇"_t"݇">݇"6݇".݇"&݇"׵"݇"݈"D ^_"  <  "g "g ݇""g ߸" " ߸" g  _"΀އt WI6hN |WIih XtYXCXxW_ YXC8 ʿ~X4XWIJWr꿤P``ꁟWaCPCt.TΙh`tdVpV`'Vdd\d\q8'^d4X_l?pdW`hxXPtYPtNGC ((ʿ&l\p \U ކֿU  ކͿQ ކȿz l6VՀt"΀ކt l ݆"߸l"݆"_\uu筀žž"p ݆"߸p"p 5݆}"ſ"݆u"_uu筀ž;ž"g x 0ty6LTYat} ___|_C1-=g p4XG<݆"_"݆"_}}筀žž"g *"_2#_ " '_ "   @@@ @ "2 @ not assignedinvalid ordinal value =  Chr(unassigned pointerNIL]LLk ??? not assigned = 16_ = 16_ (not assigned?) =  unprintable real value unprintable real value (disposed) !1A"2$U5E%&6FVf(8 )HXuaqhex.Xenw '0@IR[dzO#,AIQYowEventOverflowInteger overflow Real overflowString overflowDivision by zeroExcess resourceNot enough storeOutput exceeded Time exceeded Data errorSymbol NLvalue  in data Corrupt dataData transmission errorInvalid argumentsFor loop cannot terminateIllegal exponentArray inside-outString inside-outIllegal parameter Out of range Array index () not in boundsSwitch index (Illegal event Charno  does not exist is not a character valueResolution failsUndefined valueUnassigned variableSwitch label (Corrupt control variable I/O error Input endedIllegal streamNIL pointer usedReference to DISPOSED object'Zero or negative argument for logarithmSignificance lostx MOD  is not permitted Missing case!Negative argument for square rootDisposing NIL pointer Interrupt 16_$Inappropriate parameters for DISPOSEVariant record misusedERROR:Diagnostics being sent to Executing  IMP Pascal 'C' called from line in  starting at line of moduleN file to that of the source file.*N-BEFORE date Copy objects with no datestamps or ones before the given date.*N-AFTER date Copy objects with no datestamps or ones after the given date.*N*NNote. If no -TO argument is specified then output is sent to Output:.*N*NEG. Copy fileFred-bcpl -to fileEric -v 2 -c -f -del*N Copy file1,directory.*-mod,file2,file3 -to file2 -Confirm*N Copy file1,file2,file3, -to $.Directory -Exact*N Copy kb:first,kb:second -to printer:*N Copy -From Directory -to Tutherdir -Contents -Verbose 3*N Copy Dir... -to NewDir... -F -After 15th August 1984 7:30 am*NExact/S CONTENTs/S Delete/S BEFORE/L/K AFTER/L/K FROM=INput/A/? TO=OUTput[Output:]Copy utility version 1.10/11ExactCONTENTsDeleteFROMmissing source file nameTOcould not read destination name from command lineCreate directory.*failed to findtrying to createcan't copy directory to file or device: dir isbad file name :copiedappendedtrying to copytrying to delete source filedestination object is not an output device :source object is not an input device :CopyOverwriteCpy-tmpdestination file alreay existsFROMfailed to findtrying to rename temporary file asrenaming as *Ntrying to closeCopyFROMfailed to findsource and destination wild cards do not matchCopyFROMfailed to findFROMCopy0 deleted*Ndirectory '' created*NOverwritetrying to deletetrying to open output filedestination file already exists to (1 byte) bytes) as *NOverwriteError in Warning from : '*N, detected by '? (Y/N) : trying to read response to prompttrying to decode command line argumentConfirmForceAbandon4 NIL |trying to read date argument for could not read date from command linebad date :file does not existBeforeAfter|LitodayAMPMSTNDRDTHMONDAYTUESDAYWEDNESDAYTHURSDAYFRIDAYSATURDAYSUNDAYJANUARYFEBRUARYMARCHAPRILMAYJUNEJULYAUGUSTSEPTEMBEROCTOBERNOVEMBERDECEMBER Stopped at line  in "b|!.@< #0SIA1:[IMPRTL.PANOS.SOURCE.DIAGNOSE]PANDIAG.IMP;1|  ݃""  ݃""  ;m"lg؃'8gmH8ž="舎3׳  ׳  ׳=5||m} } }߰m"lg؂' 8gmH8__| P ;m"lg؂'8gmH8ž="|ꀟ  ݂}"߸"|  ݂l"_"|_  T݂d"H  =݂c"2  ݂e"| ݂Y"|2WIN |WIihXXW YXC8 tx4+$YxCG0z Yx*| 4x|4x~\xa|4|||꿈Y|G m|_xvxCΙCC Win |WhIHXXW YXC8 tx4 iqK4x|4x~\xa|4Y|W|W|  "2 @----> Initialise ----> Stop----> Exception Exception ----> Exception passed on ----> Diagnose----> Diagnose passed on----> Describe frame----> Describe module data ----> Unwind----> Unknown handler type(/SIA1:[IMPRTL.PANOS.SOURCE.DIAGNOSE]LLHAND.IMP;12 Ιץ舎""2 "2*******continue*********l >/SIA1:[IMPRTL.PANOS.SOURCE.DIAGNOSE]SIGNAL.IMP;1 Wg؂'8gH8__9]'~ W H2_|x_t'dx `'xhhvpp Dp7p6lpvpptzptWhWpNdh'hdlh꿼#ph꿵Wxnx꿠d_`t'_& +&%x" ݁x&'Cxff|_P'ppP P ݁Q~||| |8 ݁i|ʀG|xpFt @Z|pQxx>ttN'xpQ'~pe ' _> > =6|j2I j 2   |j2݀8 @|j _'nN{||2W 8Θ="gH2"2 3" d}@44444444444ffaAfffffaAAdAafOSWordBBCRandomRandomXOSByte FindOutputIO SWriteByte XBlockWrite SBlockWrite BlockRead XWriteByte FindInput CloseStream InputStream XEndOfFile XSelectInput XSelectOutput SetFileOffsetXBytesOutstanding XDeleteFileFileStopProgramSignalHandlerAllocateStore Arguments DecodeInit DecodeArg GetStringArg T#)H=pDR|0WW \$8a8z8X|&,|/|"_ݖ_|""_߻ݖ|"Wm_t_p0x߸"__"______ _"_t筁_l\l(l߸" " ݖ_筀m_" _ݖݖ}ݖaݖEݖ)ݖ ߹_߻#߸ݗݖݖݖݖݖw߹_߻#߸ݗmݗQݗ5ݗݖݖ߹_߻#߸ݗݗݗݗݗgݗK߹_߻#߸ݘAݘ%ݘ ݗݗݗ߹_߻#p߸ݘݘݘsݘWݘ;ݘ߹_߻#J߸ݙݘݘݘݘݘ߹_߻#$߸ݙݙcݙGݙ+ݙݘ߹_߻#筀d2c筁,(" 筀" ߸"߸" ______ _"_߸"_߹" " " ݙ/ݙ4(ݙN!ݙhݙݙ ݙݙݙݚݚݚ5ݚOݚiݚݚݚݚݚݛݛݛ6ݛPݛjVݛ~ݛwݛpݛiݛbݜ[ݜTݜ7MݜNCݜh<ݜ5ݜ.ݜ'ݜ ݜݝݝݝ5ݝOݝiݝݝݝݝ筀w꼜" _P|2'Ing؏'PbcLP;&`PaL¿mLĿnHHN dſ`_"TLPſL\`\aſ`ߺ"Tƿd\`ſ`ߺ"TƿdX\ſX  |\`W|`W>ߚ Θ'vP| X'nI||"N3 ; 'F|| % "| __wx"|筿"_>!@>+6 _lxxx||P_" ߸_"'Eg؎__Ŀ ΣXĿ'VP'fſ" *|xEx Ax'zxEx0 Ax'rPxAx:[WAx{s*e|}X}|ݎx"|'x>p_88>lxp>+dx @ >>hp @>!>dh h<xxd d(pplǡ_筀筀A? _"2" "2Heap failure -- Cannot extend heapHeap Corrupt 3Heap Corrupt 4Extend heap logic errorV@.\`,?)SIA1:[IMPRTL.PANOS.SOURCE.CORE]HEAP.IMP;1> , >xt4x @$xtj>x t @$xtjt \ z_ > >x_lꀁ4xxx'Fll[p>%lGpx@$6x pxN 0?xx@$ @$xlhN#\>>xz - h >;xdুd0X7žz0gXHԢ gHJΘ. 7 >dx!@$6x>;6dgd0HX@lz-Θ+_Nl?Ž"`gH` Θ0`X0'Θ` gaH  W H82X\ z_ > >4N @0?N#\>>z - >;ƾ_ž?ž"'Θ` gH z0'g`H gHJΘ. < >辄@$6>;6g0C gH82 筀ſ"ſ"2 筀ſ"ſ"2N3>>0} >  "2uZ'R((*+SIA1:[IMPRTL.PANOS.SOURCE.CORE]REALIO.IMP;1 WgH__H WgH___88>| \8ǡeݒu_88>| \8ǡeݒG ݒ/ !ݒ ߾ ?ſq"pgqxHgؒ_ԣP8W8H8X_|  |$(( (v av(m h"(_@x'xWxW(\hW筀OſS(gHW(W$.$(gdW(W T|`nh,, g__WW,W(hchcm ""W(m m "W(h` "" W(m W(\hcW(hc ݑKh  'Ӏ 'ӁW(T c\ha\h m," W(hcKW(T h`%mmm " W(m "W(hbHRmmm " W(\hb;W(T h`mmm " mmm "W(h \hahbW(hW(jG ߺ߹筀"_>筀A筀@筀@筀@筀A>筀"_>筀A筀A筀A筀A筀A>筀"_筀C筀L筀P筀~筀A筀A筀~筀"_筀A筀A筀C筀E筀I筀Q筀a筀"__筀"_筀筀P筀P筀筀P筀筀"_筀筀T筀T筀筀"_筀__筀_ߺ筀筀"_0筀P筀筀"_筀筀筀筀筀筀筀筀"_߸߸߸筀߸߸筀筀"߻߸___筀"筀筀筀筀筀___筀"筀筀筀筀筀筀??筀"筀筀筀筀筀筀筀筀筀"筀筀筀筀筀筀__筀"?筀筀筀筀__筀筀"筀筀筀筀筀__筀筀"_筀筀筀筀__筀筀"____?߸߻筀"_߸筀x筀筀筀筀筀"筀@筀______筀"筀筀\"""___筀"_88>||\wWǡXb Z d(Z\['x筁,_߸"_88>tN$ qx\|txux pxCx|}x0 yxsPxxx]xx;3^Z筀"hxx''x_2tǡ9t_ttǠ9" w穂>p=l'l_xpxl߸߸"xǠ 4'bW "\\a~2\-aa^aNayRRQQPPOO筀"VVUUTTSS筀" 筀" 筀" " \\a|c $߹" _88>| ]ǡ稀|þǠ|c^߹ߺ穀8>|?Ǿǡcde|f^ߺ_ђ||||"筀" "e|ْ<_hW_88>d Eǡ_dgEǠF P $_hW_PW_W _W$_W(_pW,_gh_gP_ g_$g_l Ǿ l:F,`x/x߸"________߸"________筀"筀筀筀筀筀筀筀筀筀"筀筀?߻߹߸筀"筀筀筀筀筀筀筀筀筀"筀筀筀筀筀筀筀筀筀"߸߹߻?筀筀筀"筀߻߹߸߸߸筀"筀筀筀筀筀筀筀筀筀"筀筀筀筀筀筀筀筀筀"_݆݆݅)݆L݆o݆݆݆݆݇_ü Pz_:g '~_煼y煼żż"߹" _ ż ż9'ż z'żzzż gƼx<'VWP?8>LHPVNǡyPXU '~PD' #LgTxcx9 'DCD'VPL;Wxh=W{-" ߻_"?8>| " ?8>xg c|稀TWxWCgiox9j ݐp_|$(( GW(nxGj+n j%ieW(h mm"(_" W|.|x(꿹|$'|%|W(h  ݐ `h ,W(\hahbWGJH HWI,ke   (XaR. '|&|W(h  ݏh m," W(h`hbXW(ha\hb8F3W(nx,tWGJH HWItk'ftxx\_0'4g0_Ѐ'ЀgЀ׀ׁЀЀ>ЀЀ\р΁ޏ@΁ޏЀ__"2#D'sĿ@g(H@ 0gg؎_(gAH(T@gHgg؎'(gAH(Tž-  hW(hh z߸ 2'|/|gg؎V'(gH(Tž-< S _ M2\W Θo'n bſOZ,g؍'gHž(XXgH߸ b2_ H2W `(XſOZOXgHƿ9 ƿ. ЁΘ^2$|/|߸畁߸__߸M '溽_$ Guuv v ߹݌y ߺ݌nv꿸݌X筀ż"żżŽ煽Ž" '݌)$ ۧgHŽ߸žžŽ筀ſ"z\ƽgHgHƾ(Wh_Ձ"Gƾ _Ձ "2,gg؋'(gH(Tż-QWn$Ž߸ߺ݋Ž筀"z\ŽƼ|2 W_0ƿ606W|hhhZ "| " |2 XX _'_'× PN#^||| _'|| U" U|" 2   _'k_'a N#V||| _'J||" |"2 U _'WPN#N||C| U|| U" U|" 2  _'˗ N#V||| || " |"2  WЁN ,,(W(Hc !݉1M "2 WЁ N,,(W(Ic $݉M " (|,x  WЁN WЁHb(( ,"tWЁM "0t"|(x, 2 " " WЁH ݉^qHa2 "W(H  " W(H 2W(HbW(Ha2W(HbW,M M- M+M-@,X@G0j G9 ݈ _|_x(@b|,@'FPttj  .x334jz _ Σxx7꿻|N#xxx2t|/|'ƿx'ވ8|>h_@_`d_X_\(xb@@>h,~L " |; " ;?>| " " ?8>x |gTcWxW)C ]_?x9 " |8<'!_W " " XX^  " XX^| |^FF "TJJIIHHGG筀"NNMMLLKK筀" 筀" 筀" " X " " '||_"|筄_"||ڿ筃 " " " " _ " "2**!!C9FFF0016086808481A002B1808D45098D4709C8B1808D3F09C8B1808D3509A019B92F0920CBFF8810F7A481A9FF60000000000000000D0017000000000000000C00170C07001A001CEE236 237 10 8 8 238 239 240 10 8 8 8 241 242 243 10 8 8 8 244 245 246*    T H T211113110011110011111111110011110011110011000000000000211113110011110000110011511114000000000000211113110011110011110011511114000000000000121113114011110000110000110000000000000000211113110011110011110011110011211113140011000011008117000011130011511114211113110011000011000214002140021400111111211113110011110211112411114011110011511114061100011100001100001100001100001100111111021113214000110000111113110011110011511114OUTPUTrawvdu:Acorn Cambridge Co-processor |System includes:| ~ NS32016 CPU| ~ NS32081 FPU| ~ 512K or 1 MB RAM| ~ Operating system| ~ 5 standard languages| Key Points:| ~ High performance| ~ Modular design| ~ 32 bit capacity| ~ Mainframe/mini| compilers/applications| System Architecture:| ~ Dual processors| ~ BBC graphics & I/O| ~ File stores: floppy,| winchester, file server|and remote host.| Communications:| ~ Serial port| ~ Centronics port| ~ Local area network| ~ X25 gateway as option| | Languages:| ~ FORTRAN 77| ~ Acorn C| ~ ISO Pascal| ~ Cambridge Lisp| ~ BBC Basic| Application areas:| ~ Program development| ~ Maths and Stats.| ~ Engineering & CAD| ~ Text processing| ~ Educational computing|32016 CPU:| ~ 32 bit registers| ~ 24 bit addressing| ~ 16 bit ext. data bus| ~ 32 bit arithmetic| ~ linear address space| Performance:| ~ 6MHz clock| ~ 8 L.XgX[穀_LǡE%P L,}  ݇"\.Lǡ0j ǡ9'~PHX\H-Pc꿈P L_j0hƿt|2 _W|N`t|)|g |cBCx.ΏBxt |X`X`Z$|X\zX\_lWX`H^d`h2