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