diff --git a/ROMs/BCPL/BCPL b/ROMs/BCPL/BCPL new file mode 100644 index 0000000..b737891 Binary files /dev/null and b/ROMs/BCPL/BCPL differ diff --git a/ROMs/BCPL/BCPLARG b/ROMs/BCPL/BCPLARG new file mode 100644 index 0000000..61a2c39 Binary files /dev/null and b/ROMs/BCPL/BCPLARG differ diff --git a/ROMs/BCPL/BCPLCCG b/ROMs/BCPL/BCPLCCG new file mode 100644 index 0000000..4d315f6 Binary files /dev/null and b/ROMs/BCPL/BCPLCCG differ diff --git a/ROMs/BCPL/BCPLSYN b/ROMs/BCPL/BCPLSYN new file mode 100644 index 0000000..d7396ba Binary files /dev/null and b/ROMs/BCPL/BCPLSYN differ diff --git a/ROMs/BCPL/BCPLTRN b/ROMs/BCPL/BCPLTRN new file mode 100644 index 0000000..f06ae34 Binary files /dev/null and b/ROMs/BCPL/BCPLTRN differ diff --git a/ROMs/BCPL/DEBUG b/ROMs/BCPL/DEBUG new file mode 100644 index 0000000..d23b3a4 Binary files /dev/null and b/ROMs/BCPL/DEBUG differ diff --git a/ROMs/BCPL/ED b/ROMs/BCPL/ED new file mode 100644 index 0000000..73b30d3 Binary files /dev/null and b/ROMs/BCPL/ED differ diff --git a/ROMs/BCPL/ENCODEB b/ROMs/BCPL/ENCODEB new file mode 100644 index 0000000..02ebf92 --- /dev/null +++ b/ROMs/BCPL/ENCODEB @@ -0,0 +1,41 @@ +SECTION "ENCODE" +GET "LIBHDR" + +MANIFEST $( avsize = 20 $) + +LET start() BE +$( LET ch = ? + LET infile, outfile = ?, ? + LET argvec = VEC avsize + + IF RDARGS("FROM/A,TO/A", argvec, avsize) = 0 THEN + STOP(11) // invalid arguments + + infile := FINDINPUT(argvec!0) + IF infile = 0 THEN + STOP(RESULT2) // invalid in file + outfile := FINDOUTPUT(argvec!1) + IF outfile = 0 THEN + STOP(RESULT2) // invalid out file + + SELECTINPUT(infile) + SELECTOUTPUT(outfile) + + ch := RDCH() + WHILE ch NE endstreamch DO + $( WRCH( codechar(ch) ) + ch := RDCH() + $) + + ENDREAD() // not strictly necessary + ENDWRITE() // but good practice +$) + +AND codechar(char) = VALOF +$( TEST 'A' <= char <= 'Z' THEN + char := 'A' + 'Z' - char + ELSE IF 'a' <= char <= 'z' THEN + char := 'a' + 'z' - char + RESULTIS char +$) + diff --git a/ROMs/BCPL/EX b/ROMs/BCPL/EX new file mode 100644 index 0000000..b5e5500 Binary files /dev/null and b/ROMs/BCPL/EX differ diff --git a/ROMs/BCPL/EXAMPLE b/ROMs/BCPL/EXAMPLE new file mode 100644 index 0000000..ba0cdac Binary files /dev/null and b/ROMs/BCPL/EXAMPLE differ diff --git a/ROMs/BCPL/EXMP1B b/ROMs/BCPL/EXMP1B new file mode 100644 index 0000000..6adab95 --- /dev/null +++ b/ROMs/BCPL/EXMP1B @@ -0,0 +1,97 @@ +section "EXMP1" + +needs "sound" // sections from LIB +needs "envelope" +needs "adval" +needs "vdu" +needs "time" + +get "exmphdr" // header file + +// This section of EXAMPLE contains START plus various +// utility routines. + +let start() be +$( // Select teletext mode and write double-height cyan heading. + + mode(7) + for i = 0 to 1 do // write 2 identical lines (double height) + writes("*x86*x8D E X A M P L E*n") + // '*x86' gives character 86 (hex) + + // Write list of options in white. + + writes("*nEnter*X88T*X89(Tune)*n") + writes( " *X88V*X89(Voltmeter)*n") + writes( " *X88X*X89(Exit)*n*n") + writes( "then press*x88RETURN") + + $( // Enter loop to get valid input. Discard any characters left + // over from previous input, blank out previous input then prompt. + + while testflags(more.input) do rdch() + txtcursor(0, 12) + for i = 1 to 40 do wrch('*S') + txtcursor(0, 12) + writes("? ") + + // Process the input, taking notice of the first character only. + + switchon capch(rdch()) into + $( case 'T': + playtune() + break // jumps out of inner repeat loop + + case 'V': + voltmeter() + break + + case 'X': + wrbin(12) // clear screen + stop(0) // and exit + $) + + // If input invalid issue a flashing magenta error message and + // loop back to re-issue prompt. + + txtcursor(0, 15) + writes("*x85*x88Please enter T, V or X*n") + $) repeat + + // Come here on return from PLAYTUNE or VOLTMETER. Repeat the whole + // procedure. + +$) repeat + + +// COLOUR sets the text colour (not in mode 7). + +and colour(col) be + vdu("17,%", col) + + +// GCOL sets the graphics colour (not in mode 7). + +and gcol(gmode, col) be + vdu("18,%,%", gmode, col) + + +// HIDECURSOR conceals the cursor. + +and hidecursor() be + vdu("23,1,0;0;0;0;") + + +// PLOT has the same effect as the BASIC command PLOT. + +and plot(k, x, y) be + vdu("25,%,%;%;", k, x, y) + + +// TXTCURSOR positions the text cursor. + +and txtcursor(x, y) be + vdu("31,%,%", x, y) + +. // '.' marks end of section + diff --git a/ROMs/BCPL/EXMP2B b/ROMs/BCPL/EXMP2B new file mode 100644 index 0000000..3c56591 --- /dev/null +++ b/ROMs/BCPL/EXMP2B @@ -0,0 +1,139 @@ +section "EXMP2" + + get "exmphdr" + + // This section of EXAMPLE contains the procedure to play a tune. + + + // PLAYTUNE uses the ENVELOPE and SOUND procedures to play a simple tune. The + // tune is stored in a string. Each note is represented by 3 characters - the + // octave number, the note (a-g) and +, - or space for sharp, flat or + // natural. The note is in lower case for a quaver and upper case for a + // crotchet. The first note in a bar is preceded by '!'. The string is assumed + // to be valid. + + let playtune() be + $( let envnumber = 1 // envelope to use + let pitch = ? // pitch parameter for SOUND + let sbuffsz = adval(-6) // size of sound buffer 1 (number of free slots) + let soundvec = vec 3 // parameter for SOUND + let tune = "!3b-* + *!4e-4e-4e-4e-4e-4e-* + *!4d 4f 4b-4b-4a-4f * + *!4e-4e-4e-4e-4d 4e-* + *!4f 3b-3b-3B-3b-* + *!4e-4e-4e-4e-4e-4e-* + *!4d 4f 4b-4b-4a-4f * + *!4g 4b-4e-4f 4e-4f * + *!4e-3e-3e-3E-" + + // NOTEVAL is a table of the pitch for the notes in one octave, + // starting with A and taking C as 0. + + let noteval = table 36, 44, 0, 8, 16, 20, 28 + + // Set up screen display then set up envelopes. Envelope 1 + // is for quaver. Envelope 2 is for crotchet. Envelope 3 + // is for accented quaver at start of bar. (There are no + // accented crotchets.) + + dodisplay() + envelope(table 1, 2, 0, 0, 0, 0, 0, 0, 30, -2, -127, -127, 120, 105) + envelope(table 2, 2, 0, 0, 0, 0, 0, 0, 60, -6, -30, -127, 120, 60) + envelope(table 3, 2, 0, 0, 0, 0, 0, 0, 64, -10, -65, -127, 126, 59) + + soundvec!0 := 1 // initialise channel number + + // Process each character in the tune string. + + for i = 1 to tune%0 do + $( let ch = tune%i + + test '1' <= ch <= '7' then + + // Octave number - initialise pitch. + pitch := 48*(ch-'0') - 91 + + else test 'a' <= ch <= 'g' then + + // Note (quaver) - update pitch and leave envelope as 1 (or 3). + pitch := pitch + noteval!(ch-'a') + + else test 'A' <= ch <= 'G' then + + // Note (crotchet) - update pitch and select envelope 2. + $( pitch := pitch + noteval!(ch-'A') + envnumber := 2 + $) + + else test ch = '!' then + + // Start of bar so set envelope 3 for following note. + envnumber := 3 + + else + + // Assume '+', '-' or space so adjust pitch for sharp or + // flat if appropriate then play the note. + $( test ch = '+' then + pitch := pitch + 4 + else if ch = '-' then + pitch := pitch - 4 + + soundvec!1 := envnumber + soundvec!2 := pitch + soundvec!3 := envnumber = 2 -> 6, 3 // duration (longer for crotchet) + sound(soundvec) + + envnumber := 1 // reset envelope number to quaver. + $) + $) // back for next character + + // All notes put in buffer. Wait until they have been played + // before returning to the menu. + + until adval(-6) = sbuffsz loop // wait for tune to end + $) + + + // DISPNOTE displays a note symbol in flashing white at a specified x position. + + and dispnote(x) be + $( let chartab = table 160,160,234,228, // 4x5 array of graphics chars + 141,160,234,160, // double height + 141,160,234,160, + 160,248,254,160, + 160,181,234,160, + 160,171,167,160 + for i=0 to 5 do + $( txtcursor(x, 3+i) // position character on line 3 + wrbin(136) // flashing + wrbin(151) // graphic white + for j=4*i to 4*i+3 do + wrbin(chartab!j) + wrbin(137) // steady + $) + $) + + + // DODISPLAY sets up the display. + + and dodisplay() be + $( mode(7) + for i = 0 to 1 do // double height title + $( txtcursor(10, i+4) + writes("*x8D*x81*x9D*x86M U S I C *x9C") + $) + dispnote(1); dispnote(29) // note symbols + txtcursor(1, 10) + for i = 0 to 14 do + $( wrbin(129 + (i rem 3)) // select one of three colours + writes("MUSIC") + wrbin(10) // cursor down then 4 left + for j = 1 to 4 do wrbin(8) + $) + txtcursor(0, 23) // leave cursor at end of screen + $) + . + + \ No newline at end of file diff --git a/ROMs/BCPL/EXMP3B b/ROMs/BCPL/EXMP3B new file mode 100644 index 0000000..8658404 --- /dev/null +++ b/ROMs/BCPL/EXMP3B @@ -0,0 +1,136 @@ +section "EXMP3" + +get "exmphdr" + +// This section of EXAMPLE contains the procedure to +// display the voltages of the four analogue inputs. + +manifest $( col.red = 0 // logical colours used + col.white = 1 + col.blue = 2 + col.cyan = 3 + $) + +// VOLTMETER displays the voltages read from the four analogue input channels +// as vertical bars. + +let voltmeter() be +$( let prevpos = vec 4 // previous position of top of bar + +// Select screen mode 5. + + unless mode(5) then + $( let endt = time() + 500 // show message for 5 seconds + if endt < 0 then endt := endt + #X8000 + // allow for wrap-round + wrbin(12) // clear screen + writes("Cannot select mode 5.*N") + writes("When '!' appears type:*n") + writes("*x88SHUFFLE*x89*nand press*x88RETURN*n") + writes("then re-run this program.*n") + until time() = endt loop + stop(0) // exit + $) + + // Define logical colours. + + vdu("19,%,1;0;", col.red) + vdu("19,%,7;0;", col.white) + vdu("19,%,4;0;", col.blue) + vdu("19,%,6;0;", col.cyan) + + // Display fixed text etc. + + dofixed() + for i=1 to 4 do prevpos!i := 224 // initialise to 0v. + + // Loop round each channel in turn, reading the value and + // updating the display. + + $( for i = 1 to 4 do + + // Value is read as number between 0 (=0v) and 65520 (=1.8v). + // Convert it to y co-ord of top of bar (224=0v; 685=1.8v). + // When converting shift value right to avoid values > 32767 + // being treated as negative. + + $( let endpos = 224 + muldiv(adval(i) >> 1, 462, 32760) + let xpos = 256*i + 132 // 'x' for left of bar + + // If new bar is same length as before do nothing. If new bar is + // shorter then erase top of existing bar by drawing it in the + // background colour. If new bar is longer draw the extra bit only. + + unless endpos = prevpos!i do + drawbar(xpos, endpos, prevpos!i, + (endpos < prevpos!i -> col.blue, col.cyan) + ) + + prevpos!i := endpos // remember new position + + // See if DELETE was pressed and return if so. (*FX129 with + // -ve parameter checks if specied key is pressed.) + + if opsys(129, -90, #xFF) ~= 0 return + $) + $) repeat +$) + + +// DOFIXED sets up the fixed part of the display. + +and dofixed() be +$( hidecursor() + + // Set up a red background then define a graphics window and + // initialise it to blue. + + colour(128+col.red) + wrbin(12) // clear text screen + vdu("24,256;224;1279;1023;") + gcol(0, 128+col.blue) + wrbin(16) // clear graphics area + + colour(col.white) // write text in white + txtcursor(6, 0); writes("VOLTMETER") + txtcursor(1, 2); wrch('V') + for i = 0 to 5 do + $( txtcursor(0, 24-4*i) // write scale in format x.x + writef("%i1.%i1", (5*i)/10, (5*i) rem 10) + $) + txtcursor(0, 27); writes("CHN: 1 2 3 4") + txtcursor(1, 31); writes("Hit DELETE to exit") + + plotgrid() +$) + + +// DRAWBAR draws or deletes a bar. Comments assume XPOS is +// the x co-ord of the left of the bar ,YLOW is the y co-ord +// of the bottom, YHI is the y co-ord of the top and COL is +// the colour. In fact YLOW and YHI may be reversed. + +and drawbar(xpos, ylow, yhi, col) be +$( gcol(0, col) // select colour + plot(4, xpos, ylow) // move to bottom left + plot(5, xpos+64, ylow) // draw to bottom right + plot(85, xpos+64, yhi) // fill triangle to top right + + plot(5, xpos, yhi) // draw to top left + plot(85, xpos, ylow) // fill triangle to bottom left + + plotgrid() // redraw grid in case lines were overwritten +$) + + +// PLOTGRID plots the horizontal lines every 0.5 volots. + +and plotgrid() be +$( gcol(0, col.white) // write graphics in white + for i = 0 to 5 do + $( plot(4, 256, 224+i*128) // move to left endpoint + plot(17, 1024, 0) // draw dotted to right endpoint + $) +$) +. + diff --git a/ROMs/BCPL/EXMPHDR b/ROMs/BCPL/EXMPHDR new file mode 100644 index 0000000..8d157bf --- /dev/null +++ b/ROMs/BCPL/EXMPHDR @@ -0,0 +1,19 @@ +// Header file for EXAMPLE. + + get "libhdr" + + manifest $( + ug = firstfreeglobal // to save typing + $) + + global $( + playtune:ug + voltmeter:ug+1 + txtcursor:ug+2 + hidecursor:ug+3 + colour:ug+4 + gcol:ug+5 + plot:ug+6 + $) + + \ No newline at end of file diff --git a/ROMs/BCPL/GLOBALS b/ROMs/BCPL/GLOBALS new file mode 100644 index 0000000..d784e88 Binary files /dev/null and b/ROMs/BCPL/GLOBALS differ diff --git a/ROMs/BCPL/HEAP b/ROMs/BCPL/HEAP new file mode 100644 index 0000000..b06ee7c Binary files /dev/null and b/ROMs/BCPL/HEAP differ diff --git a/ROMs/BCPL/INSTR b/ROMs/BCPL/INSTR new file mode 100644 index 0000000..4fc6d72 Binary files /dev/null and b/ROMs/BCPL/INSTR differ diff --git a/ROMs/BCPL/IO b/ROMs/BCPL/IO new file mode 100644 index 0000000..67c43bc Binary files /dev/null and b/ROMs/BCPL/IO differ diff --git a/ROMs/BCPL/JOIN b/ROMs/BCPL/JOIN new file mode 100644 index 0000000..9537a77 Binary files /dev/null and b/ROMs/BCPL/JOIN differ diff --git a/ROMs/BCPL/JOINCIN b/ROMs/BCPL/JOINCIN new file mode 100644 index 0000000..5f845e7 Binary files /dev/null and b/ROMs/BCPL/JOINCIN differ diff --git a/ROMs/BCPL/LIB b/ROMs/BCPL/LIB new file mode 100644 index 0000000..4f6e5b3 Binary files /dev/null and b/ROMs/BCPL/LIB differ diff --git a/ROMs/BCPL/LIBHDR b/ROMs/BCPL/LIBHDR new file mode 100644 index 0000000..8c1fb5c --- /dev/null +++ b/ROMs/BCPL/LIBHDR @@ -0,0 +1,23 @@ + +// Copyright RICHARDS COMPUTER PRODUCTS (C) 1982 +// LIBHDR +GLOBAL $( +START:1;STOP:2;STARTINIT:3;MCRESULT:11;RESULT2:15;ABORT:23;FREEVEC:25 +GETVEC:26;LEVEL:27;LONGJUMP:28;MAXVEC:29;CALL:31;OPSYS:35;MOVE:36;MULDIV:37 +TRAP:38;COMPCH:42;CALLCO:43;COWAIT:44;CREATECO:45;DELETECO:46;RESUMECO:47 +CNSLINSTR:52;CNSLOUTSTR:53;CAPCH:59;DELFILE:64;FINDINPUT:66;FINDOUTPUT:67 +RENAME:70;ENDREAD:71;ENDWRITE:72;INPUT:73;OUTPUT:74;RDBIN:75;RDCH:76 +TESTSTR:77;READN:78;SELECTINPUT:79;SELECTOUTPUT:80;WRBIN:81;WRCH:82 +UNRDCH:83;NEWLINE:84;NEWPAGE:85;WRITED:88;WRITEF:90;WRITEHEX:91;WRITEN:92 +WRITES:94;COMPSTRING:95;FINDARG:96;RDARGS:97;RDITEM:98;SPLIT:99;GLOBIN:100 +GLOBUNIN:101;LOADSEG:104;READWORDS:106;TESTFLAGS:108;WRITEWORDS:109 +RANDOM:111;TIME:112;MODE:115;RUNPROG:118;CALLBYTE:121;SAVE:123;FILETOVEC:125 +VECTOFILE:126;SOUND:128;ENVELOPE:129;READVEC:168;READ:169;VDU:200;ADVAL:201 +SAVEVEC:204 +$) +MANIFEST $( +CONSOLE.KEY=1;MORE.INPUT=2;ENDSTREAMCH=-1;FIRSTFREEGLOBAL=250;GLOBWORD=-888 +TICKSPERSEC=100 +STYPE.TERM=4;STYPE.INT=8 +$) + diff --git a/ROMs/BCPL/NEEDCIN b/ROMs/BCPL/NEEDCIN new file mode 100644 index 0000000..154fb9a Binary files /dev/null and b/ROMs/BCPL/NEEDCIN differ diff --git a/ROMs/BCPL/OPT b/ROMs/BCPL/OPT new file mode 100644 index 0000000..f2d649b --- /dev/null +++ b/ROMs/BCPL/OPT @@ -0,0 +1,39 @@ +/* Section commented out in case it is not needed + +SECTION "OPTION" + +// contains GETBYTE,PACKSTRING,PUTBYTE,UNPACKSTRING +// these standard procedures are unnecessary for new code. +// The remainder are easily provided by the % operator. +// Modified 8/7/82 by E.Allen for BBC Micro + + +GET "LIBHDR" +GET "SYSHDR" +// if OPTION is a separate segment it is necessary to allocate +// Globals for the procedures required, and declare or +// reference them here. + +*/ + +// if "OPTION" is included as local procedures within a section +// the next LET may need to be changed to AND. + + +LET GETBYTE(S, I) = S%I + + +AND PACKSTRING(V, S) = VALOF + $( LET N = V!0 & 255 + LET I = N/2 + FOR P = 0 TO N DO S%P:=V!P + IF (N&1)=0 DO S%(N+1) := 0 + RESULTIS I $) + + +AND PUTBYTE(S, I, B) BE S%I := B + + +AND UNPACKSTRING(S, V) BE + FOR I = 0 TO S%0 DO V!I := S%I + diff --git a/ROMs/BCPL/RAS b/ROMs/BCPL/RAS new file mode 100644 index 0000000..288fab7 Binary files /dev/null and b/ROMs/BCPL/RAS differ diff --git a/ROMs/BCPL/STACK b/ROMs/BCPL/STACK new file mode 100644 index 0000000..9e5c310 Binary files /dev/null and b/ROMs/BCPL/STACK differ diff --git a/ROMs/BCPL/STATS b/ROMs/BCPL/STATS new file mode 100644 index 0000000..61b12c2 Binary files /dev/null and b/ROMs/BCPL/STATS differ diff --git a/ROMs/BCPL/SYSHDR b/ROMs/BCPL/SYSHDR new file mode 100644 index 0000000..62b766d --- /dev/null +++ b/ROMs/BCPL/SYSHDR @@ -0,0 +1,32 @@ + +// Copyright RICHARDS COMPUTER PRODUCTS (C) 1982 +// SYSHDR +GLOBAL $( +MAXGLOB:0;ABORTCODE:4;ABORTLABEL:5;ABORTLEVEL:6;STOREFILES:16;STREAMCHAIN:17 +SYSINDEX:18;TRAPSTACK:19;MAINSTACK:20;LASTERROR:21;CURRCO:22;ENDPROG:24 +STACKSIZE:30;CLIINSTR:33;ENDTRAP:34;FSTYPE:39;WRITET:40;WRITEU:41;HEAP:48 +HEAPEND:54;ERRORSTREAM:58;COMMON2:62;COMMON3:63;DELXFILE:65;FINDXINPUT:68 +FINDXOUTPUT:69;WRITEA:86;WRITEBA:87;WRITEDB:89;WRITEOCT:93;EXTSFILE:102 +UNLOADSEG:105;LINKEDFILES:114;VDUINFO:116;LIBBASE:117;TRAPSTART:122 +APTOVEC:127;CONTPRG:149;COLIST:166;ERRORMSG:202;SHUFFLE:203;FAULTROUTINE:205 +TIDYSTATE:208;MOVEBYTE:213;BACKMVBY:218;BACKMOVE:219 +$) +MANIFEST $( +BITSPERWORD=16;BYTESPERWORD=2; +MAXINT=32767;MININT=-32767 +I.LIBBASE=0;I.INTBASE=1;I.TRST=2;I.FLAGS=3 +I.LIMIT=4;I.CSTATE=5;I.TSTATE=6;I.RSTATE=7 +I.TIME=8;I.JADD=9;I.TOD=10;I.DATE=11 +I.DEFSPACE=12;I.RESTART=13 +R.MCST=0;R.CURRCO=1;R.SP=2;R.PC=3;R.A=4;R.B=5;R.C=6 +M.TIMED=1;M.TRAPESC=2;M.TRAPGV=4;M.TRAPFLAGS=#X80;M.TRAPPED=#X100 +F.INST=0;F.JUMP=1;F.CALL=2;F.COUNT=3;F.LASTTRAP=4;F.JPTIME=5 +J.FROM=0;J.TO=1 +ENTRYWORD=#XDFDF +SECTWORD=#XFDDF;NEEDSWORD=#XFEED +T.END=992;T.HUNK=1000;T.MC=1001;T.RELOC=1002 +S.TYPE=4 +SF.BSIZE=10 +DV.S=7;DV.F=8 +$) + diff --git a/ROMs/BCPL/TED b/ROMs/BCPL/TED new file mode 100644 index 0000000..4bdf225 Binary files /dev/null and b/ROMs/BCPL/TED differ diff --git a/ROMs/BCPL/TEST.BCPL b/ROMs/BCPL/TEST.BCPL new file mode 100644 index 0000000..f137bbc --- /dev/null +++ b/ROMs/BCPL/TEST.BCPL @@ -0,0 +1,5 @@ +SECTION "TEST" +GET "LIBHDR" +LET start() BE + WRITES("Hello world*N") + diff --git a/ROMs/BCPL/TEST.CINT b/ROMs/BCPL/TEST.CINT new file mode 100644 index 0000000..c7f89ec Binary files /dev/null and b/ROMs/BCPL/TEST.CINT differ diff --git a/ROMs/BCPL/TESTPRO b/ROMs/BCPL/TESTPRO new file mode 100644 index 0000000..545644c Binary files /dev/null and b/ROMs/BCPL/TESTPRO differ diff --git a/ROMs/BCPL/TRACE b/ROMs/BCPL/TRACE new file mode 100644 index 0000000..d804754 Binary files /dev/null and b/ROMs/BCPL/TRACE differ diff --git a/test/bcpl b/test/bcpl new file mode 100644 index 0000000..5f55aff --- /dev/null +++ b/test/bcpl @@ -0,0 +1,24 @@ +$ go run ../../*.go ../BCPL-7.0.rom +bbz - Acorn MOS for 6502 adaptation layer, https://github.com/ivanizag/bbz +(tip: uppercase is usually needed) + +BCPL +!TYPE TEST.BCPL +SECTION "TEST" +GET "LIBHDR" +LET start() BE +WRITES("Hello world*N") + +!BCPL TEST.BCPL TEST.CINT + +BCPL - RCP V2.2 +Section TEST +Text read +RCP CINTCODE generation +CINTCODE size = 24 words + +!SAVE TEST.CINT +!TEST.CINT +Hello world +! +