Home » Archimedes archive » Zipped Apps » BCPL » BCPL/alib/evheader

BCPL/alib/evheader

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/alib/evheader
Read OK:
File size: 02B9 bytes
Load address: 0000
Exec address: 0000
File contents
GLOBAL $( SetEventHandler:112 $)

MANIFEST
$( ev.EscapeFlag	= -1;
   ev.BufferEmpty	= 0;
   ev.BufferFull	= 1;
   ev.KB		= 2;
   ev.ADCComplete	= 3;
   ev.VSync		= 4;
   ev.Timer		= 5;
   ev.Escape		= 6;
   ev.RS423Error	= 7;
   ev.NetError		= 8;
   ev.User		= 9;

   evh.Ignore		= 0;
   evh.SetFlag		= 1;
   evh.CallProc 	= 2;
   evh.Buffer		= 3;

   evb.Insertion	= 0;
   evb.Extraction	= 1;
   evb.BufferEnd	= 2;
   evb.Buffer		= 3
$)

//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
//$)
00000000  0a 47 4c 4f 42 41 4c 20  24 28 20 53 65 74 45 76  |.GLOBAL $( SetEv|
00000010  65 6e 74 48 61 6e 64 6c  65 72 3a 31 31 32 20 24  |entHandler:112 $|
00000020  29 0a 0a 4d 41 4e 49 46  45 53 54 0a 24 28 20 65  |)..MANIFEST.$( e|
00000030  76 2e 45 73 63 61 70 65  46 6c 61 67 09 3d 20 2d  |v.EscapeFlag.= -|
00000040  31 3b 0a 20 20 20 65 76  2e 42 75 66 66 65 72 45  |1;.   ev.BufferE|
00000050  6d 70 74 79 09 3d 20 30  3b 0a 20 20 20 65 76 2e  |mpty.= 0;.   ev.|
00000060  42 75 66 66 65 72 46 75  6c 6c 09 3d 20 31 3b 0a  |BufferFull.= 1;.|
00000070  20 20 20 65 76 2e 4b 42  09 09 3d 20 32 3b 0a 20  |   ev.KB..= 2;. |
00000080  20 20 65 76 2e 41 44 43  43 6f 6d 70 6c 65 74 65  |  ev.ADCComplete|
00000090  09 3d 20 33 3b 0a 20 20  20 65 76 2e 56 53 79 6e  |.= 3;.   ev.VSyn|
000000a0  63 09 09 3d 20 34 3b 0a  20 20 20 65 76 2e 54 69  |c..= 4;.   ev.Ti|
000000b0  6d 65 72 09 09 3d 20 35  3b 0a 20 20 20 65 76 2e  |mer..= 5;.   ev.|
000000c0  45 73 63 61 70 65 09 09  3d 20 36 3b 0a 20 20 20  |Escape..= 6;.   |
000000d0  65 76 2e 52 53 34 32 33  45 72 72 6f 72 09 3d 20  |ev.RS423Error.= |
000000e0  37 3b 0a 20 20 20 65 76  2e 4e 65 74 45 72 72 6f  |7;.   ev.NetErro|
000000f0  72 09 09 3d 20 38 3b 0a  20 20 20 65 76 2e 55 73  |r..= 8;.   ev.Us|
00000100  65 72 09 09 3d 20 39 3b  0a 0a 20 20 20 65 76 68  |er..= 9;..   evh|
00000110  2e 49 67 6e 6f 72 65 09  09 3d 20 30 3b 0a 20 20  |.Ignore..= 0;.  |
00000120  20 65 76 68 2e 53 65 74  46 6c 61 67 09 09 3d 20  | evh.SetFlag..= |
00000130  31 3b 0a 20 20 20 65 76  68 2e 43 61 6c 6c 50 72  |1;.   evh.CallPr|
00000140  6f 63 20 09 3d 20 32 3b  0a 20 20 20 65 76 68 2e  |oc .= 2;.   evh.|
00000150  42 75 66 66 65 72 09 09  3d 20 33 3b 0a 0a 20 20  |Buffer..= 3;..  |
00000160  20 65 76 62 2e 49 6e 73  65 72 74 69 6f 6e 09 3d  | evb.Insertion.=|
00000170  20 30 3b 0a 20 20 20 65  76 62 2e 45 78 74 72 61  | 0;.   evb.Extra|
00000180  63 74 69 6f 6e 09 3d 20  31 3b 0a 20 20 20 65 76  |ction.= 1;.   ev|
00000190  62 2e 42 75 66 66 65 72  45 6e 64 09 3d 20 32 3b  |b.BufferEnd.= 2;|
000001a0  0a 20 20 20 65 76 62 2e  42 75 66 66 65 72 09 09  |.   evb.Buffer..|
000001b0  3d 20 33 0a 24 29 0a 0a  2f 2f 4c 45 54 20 45 78  |= 3.$)..//LET Ex|
000001c0  74 72 61 63 74 46 72 6f  6d 45 76 65 6e 74 42 75  |tractFromEventBu|
000001d0  66 66 65 72 28 62 29 20  3d 20 56 41 4c 4f 46 0a  |ffer(b) = VALOF.|
000001e0  2f 2f 24 28 20 4c 45 54  20 70 20 3d 20 62 21 65  |//$( LET p = b!e|
000001f0  76 62 2e 45 78 74 72 61  63 74 69 6f 6e 3b 0a 2f  |vb.Extraction;./|
00000200  2f 20 20 20 49 46 20 70  3d 62 21 65 76 62 2e 49  |/   IF p=b!evb.I|
00000210  6e 73 65 72 74 69 6f 6e  20 54 48 45 4e 20 52 45  |nsertion THEN RE|
00000220  53 55 4c 54 49 53 20 46  41 4c 53 45 3b 0a 2f 2f  |SULTIS FALSE;.//|
00000230  20 20 20 72 65 73 75 6c  74 32 20 3a 3d 20 62 21  |   result2 := b!|
00000240  28 65 76 62 2e 42 75 66  66 65 72 2b 70 29 3b 0a  |(evb.Buffer+p);.|
00000250  2f 2f 20 20 20 70 20 3a  3d 20 70 2b 31 3b 0a 2f  |//   p := p+1;./|
00000260  2f 20 20 20 49 46 20 70  3e 62 21 65 76 62 2e 42  |/   IF p>b!evb.B|
00000270  75 66 66 65 72 45 6e 64  20 54 48 45 4e 20 70 20  |ufferEnd THEN p |
00000280  3a 3d 20 30 3b 0a 2f 2f  20 20 20 62 21 65 76 62  |:= 0;.//   b!evb|
00000290  2e 45 78 74 72 61 63 74  69 6f 6e 20 3a 3d 20 70  |.Extraction := p|
000002a0  0a 2f 2f 20 20 20 52 45  53 55 4c 54 49 53 20 54  |.//   RESULTIS T|
000002b0  52 55 45 0a 2f 2f 24 29  0a                       |RUE.//$).|
000002b9