Home » Archimedes archive » Zipped Apps » BCPL » BCPL/armlib/testev
BCPL/armlib/testev
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Zipped Apps » BCPL |
Filename: | BCPL/armlib/testev |
Read OK: | ✔ |
File size: | 01CE bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
GET "LIBHDR" GET "evheader" LET ExtractFromEventBuffer(b) = VALOF $( LET p = b!evb.Extraction; IF p=b!evb.Insertion THEN RESULTIS FALSE; result2 := b!(evb.Buffer+p); p := p+1; IF p>b!evb.BufferEnd THEN p := 0; b!evb.Extraction := p RESULTIS TRUE $) LET start() BE $( LET flag = FALSE; SetEventHandler(ev.EscapeFlag, @flag, evh.SetFlag); WHILE ~flag DO LOOP; flag := FALSE; $( LET c = ?; WHILE ~flag DO c := rdch() $) $)
00000000 47 45 54 20 22 4c 49 42 48 44 52 22 0a 0a 47 45 |GET "LIBHDR"..GE| 00000010 54 20 22 65 76 68 65 61 64 65 72 22 0a 0a 4c 45 |T "evheader"..LE| 00000020 54 20 45 78 74 72 61 63 74 46 72 6f 6d 45 76 65 |T ExtractFromEve| 00000030 6e 74 42 75 66 66 65 72 28 62 29 20 3d 20 56 41 |ntBuffer(b) = VA| 00000040 4c 4f 46 0a 24 28 20 4c 45 54 20 70 20 3d 20 62 |LOF.$( LET p = b| 00000050 21 65 76 62 2e 45 78 74 72 61 63 74 69 6f 6e 3b |!evb.Extraction;| 00000060 0a 20 20 20 49 46 20 70 3d 62 21 65 76 62 2e 49 |. IF p=b!evb.I| 00000070 6e 73 65 72 74 69 6f 6e 20 54 48 45 4e 20 52 45 |nsertion THEN RE| 00000080 53 55 4c 54 49 53 20 46 41 4c 53 45 3b 0a 20 20 |SULTIS FALSE;. | 00000090 20 72 65 73 75 6c 74 32 20 3a 3d 20 62 21 28 65 | result2 := b!(e| 000000a0 76 62 2e 42 75 66 66 65 72 2b 70 29 3b 0a 20 20 |vb.Buffer+p);. | 000000b0 20 70 20 3a 3d 20 70 2b 31 3b 0a 20 20 20 49 46 | p := p+1;. IF| 000000c0 20 70 3e 62 21 65 76 62 2e 42 75 66 66 65 72 45 | p>b!evb.BufferE| 000000d0 6e 64 20 54 48 45 4e 20 70 20 3a 3d 20 30 3b 0a |nd THEN p := 0;.| 000000e0 20 20 20 62 21 65 76 62 2e 45 78 74 72 61 63 74 | b!evb.Extract| 000000f0 69 6f 6e 20 3a 3d 20 70 0a 20 20 20 52 45 53 55 |ion := p. RESU| 00000100 4c 54 49 53 20 54 52 55 45 0a 24 29 0a 0a 4c 45 |LTIS TRUE.$)..LE| 00000110 54 20 73 74 61 72 74 28 29 20 42 45 0a 24 28 20 |T start() BE.$( | 00000120 4c 45 54 20 66 6c 61 67 20 3d 20 46 41 4c 53 45 |LET flag = FALSE| 00000130 3b 0a 20 20 20 53 65 74 45 76 65 6e 74 48 61 6e |;. SetEventHan| 00000140 64 6c 65 72 28 65 76 2e 45 73 63 61 70 65 46 6c |dler(ev.EscapeFl| 00000150 61 67 2c 20 40 66 6c 61 67 2c 20 65 76 68 2e 53 |ag, @flag, evh.S| 00000160 65 74 46 6c 61 67 29 3b 0a 20 20 20 57 48 49 4c |etFlag);. WHIL| 00000170 45 20 7e 66 6c 61 67 20 44 4f 20 4c 4f 4f 50 3b |E ~flag DO LOOP;| 00000180 0a 20 20 20 66 6c 61 67 20 3a 3d 20 46 41 4c 53 |. flag := FALS| 00000190 45 3b 0a 20 20 20 24 28 20 4c 45 54 20 63 20 3d |E;. $( LET c =| 000001a0 20 3f 3b 0a 20 20 20 20 20 20 57 48 49 4c 45 20 | ?;. WHILE | 000001b0 7e 66 6c 61 67 20 44 4f 20 63 20 3a 3d 20 72 64 |~flag DO c := rd| 000001c0 63 68 28 29 0a 20 20 20 24 29 0a 24 29 0a |ch(). $).$).| 000001ce