Home » Archimedes archive » Zipped Apps » BCPL » BCPL/alib/headers/Brazil

BCPL/alib/headers/Brazil

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/headers/Brazil
Read OK:
File size: 06B6 bytes
Load address: 0000
Exec address: 0000
File contents
; SVC calls
WriteC		*	0
WriteS		*	1
Write0		*	2
NewLine 	*	3
ReadC		*	4
CLI		*	5
Byte		*	6
Word		*	7
File		*	8
Args		*	9
BGet		*	&a
BPut		*	&b
Multiple	*	&c
Open		*	&d
ReadLine	*	&e
Control 	*	&f
GetEnv		*	&10
Exit		*	&11
SetEnv		*	&12
IntOn		*	&13
IntOff		*	&14
CallBack	*	&15
EnterSVC	*	&16
BreakPt 	*	&17
BreakCtrl	*	&18
UnusedSWI	*	&19
KUpdateMEMC	*	&1A
SetCallBack	*	&1B

WriteI		*	&100

	MACRO
	OSbyte $no,$arg1,$arg2
 [ "$arg2"<>""
	MOV	r2, #$arg2
 ]
 [ "$arg1"<>""
	MOV	r1, #$arg1
 ]
	MOV	r0, #$no
	SWI	Byte
	MEND

	MACRO
	OSword $no,$buffer,$code
 [ "$code"<>""
	ADR	r1, $buffer
 |
	ADD	r1, sb, #$buffer._offset
 ]
	MOV	r0, #$no
	SWI	Word
	MEND

	MACRO
	writes	$Arg1
	ADR	r0, %F00
	SWI	Write0
	B	%F01
00
	=	"$Arg1"
	=	0
	ALIGN
01
	MEND

	MACRO
	writeln $Arg1
	ADR	r0, %F00
	SWI	Write0
	B	%F01
00
	=	"$Arg1"
	=	10, 13, 0
	ALIGN
01
	MEND

	MACRO
	wrch	$Arg1
	SWI	&100+"$Arg1"
	MEND

;
; OSBYTE numbers
ChangeOutput		*	3
ControlCursorEditing	*	4
SetAutoRepeatDelay	*	11
SetAutoRepeatRate	*	12
DisableEvent		*	13
EnableEvent		*	14
ResetSoftKeys		*	18
KeyboardScan		*	121
GetBufferStatus 	*	128
InsertIntoBuffer	*	138
RemoveFromBuffer	*	145
ReadPageFC		*	146
WritePageFC		*	147
ReadWriteTabCharacter	*	219
ReadWriteEscapeStatus	*	229
;
; OSWORD numbers
;
ReadClock	*	1
WriteClock	*	2
ReadTimer	*	3
WriteTimer	*	4
;
; Event numbers
;
BufferEmptyEvent	*	0
BufferFullEvent 	*	1
KeyboardEvent		*	2
ADCEvent		*	3
VsyncEvent		*	4
TimerEvent		*	5
EscapeEvent		*	6
EconetEvent		*	254

; Arguments for CHANGEOUTPUT OSbyte call
RS423Only	*	1+2+4+&10
PrinterOnly	*	2+8+&10
VDUOnly 	*	4+&10

; Buffer numbers
;
KBBuffer	*	0
SerialInBuffer	*	1
SerialOutBuffer *	2
PrinterBuffer	*	3
Sound1Buffer	*	4 ; First sound buffer

	END
00000000  0a 3b 20 53 56 43 20 63  61 6c 6c 73 0a 57 72 69  |.; SVC calls.Wri|
00000010  74 65 43 09 09 2a 09 30  0a 57 72 69 74 65 53 09  |teC..*.0.WriteS.|
00000020  09 2a 09 31 0a 57 72 69  74 65 30 09 09 2a 09 32  |.*.1.Write0..*.2|
00000030  0a 4e 65 77 4c 69 6e 65  20 09 2a 09 33 0a 52 65  |.NewLine .*.3.Re|
00000040  61 64 43 09 09 2a 09 34  0a 43 4c 49 09 09 2a 09  |adC..*.4.CLI..*.|
00000050  35 0a 42 79 74 65 09 09  2a 09 36 0a 57 6f 72 64  |5.Byte..*.6.Word|
00000060  09 09 2a 09 37 0a 46 69  6c 65 09 09 2a 09 38 0a  |..*.7.File..*.8.|
00000070  41 72 67 73 09 09 2a 09  39 0a 42 47 65 74 09 09  |Args..*.9.BGet..|
00000080  2a 09 26 61 0a 42 50 75  74 09 09 2a 09 26 62 0a  |*.&a.BPut..*.&b.|
00000090  4d 75 6c 74 69 70 6c 65  09 2a 09 26 63 0a 4f 70  |Multiple.*.&c.Op|
000000a0  65 6e 09 09 2a 09 26 64  0a 52 65 61 64 4c 69 6e  |en..*.&d.ReadLin|
000000b0  65 09 2a 09 26 65 0a 43  6f 6e 74 72 6f 6c 20 09  |e.*.&e.Control .|
000000c0  2a 09 26 66 0a 47 65 74  45 6e 76 09 09 2a 09 26  |*.&f.GetEnv..*.&|
000000d0  31 30 0a 45 78 69 74 09  09 2a 09 26 31 31 0a 53  |10.Exit..*.&11.S|
000000e0  65 74 45 6e 76 09 09 2a  09 26 31 32 0a 49 6e 74  |etEnv..*.&12.Int|
000000f0  4f 6e 09 09 2a 09 26 31  33 0a 49 6e 74 4f 66 66  |On..*.&13.IntOff|
00000100  09 09 2a 09 26 31 34 0a  43 61 6c 6c 42 61 63 6b  |..*.&14.CallBack|
00000110  09 2a 09 26 31 35 0a 45  6e 74 65 72 53 56 43 09  |.*.&15.EnterSVC.|
00000120  2a 09 26 31 36 0a 42 72  65 61 6b 50 74 20 09 2a  |*.&16.BreakPt .*|
00000130  09 26 31 37 0a 42 72 65  61 6b 43 74 72 6c 09 2a  |.&17.BreakCtrl.*|
00000140  09 26 31 38 0a 55 6e 75  73 65 64 53 57 49 09 2a  |.&18.UnusedSWI.*|
00000150  09 26 31 39 0a 4b 55 70  64 61 74 65 4d 45 4d 43  |.&19.KUpdateMEMC|
00000160  09 2a 09 26 31 41 0a 53  65 74 43 61 6c 6c 42 61  |.*.&1A.SetCallBa|
00000170  63 6b 09 2a 09 26 31 42  0a 0a 57 72 69 74 65 49  |ck.*.&1B..WriteI|
00000180  09 09 2a 09 26 31 30 30  0a 0a 09 4d 41 43 52 4f  |..*.&100...MACRO|
00000190  0a 09 4f 53 62 79 74 65  20 24 6e 6f 2c 24 61 72  |..OSbyte $no,$ar|
000001a0  67 31 2c 24 61 72 67 32  0a 20 5b 20 22 24 61 72  |g1,$arg2. [ "$ar|
000001b0  67 32 22 3c 3e 22 22 0a  09 4d 4f 56 09 72 32 2c  |g2"<>""..MOV.r2,|
000001c0  20 23 24 61 72 67 32 0a  20 5d 0a 20 5b 20 22 24  | #$arg2. ]. [ "$|
000001d0  61 72 67 31 22 3c 3e 22  22 0a 09 4d 4f 56 09 72  |arg1"<>""..MOV.r|
000001e0  31 2c 20 23 24 61 72 67  31 0a 20 5d 0a 09 4d 4f  |1, #$arg1. ]..MO|
000001f0  56 09 72 30 2c 20 23 24  6e 6f 0a 09 53 57 49 09  |V.r0, #$no..SWI.|
00000200  42 79 74 65 0a 09 4d 45  4e 44 0a 0a 09 4d 41 43  |Byte..MEND...MAC|
00000210  52 4f 0a 09 4f 53 77 6f  72 64 20 24 6e 6f 2c 24  |RO..OSword $no,$|
00000220  62 75 66 66 65 72 2c 24  63 6f 64 65 0a 20 5b 20  |buffer,$code. [ |
00000230  22 24 63 6f 64 65 22 3c  3e 22 22 0a 09 41 44 52  |"$code"<>""..ADR|
00000240  09 72 31 2c 20 24 62 75  66 66 65 72 0a 20 7c 0a  |.r1, $buffer. |.|
00000250  09 41 44 44 09 72 31 2c  20 73 62 2c 20 23 24 62  |.ADD.r1, sb, #$b|
00000260  75 66 66 65 72 2e 5f 6f  66 66 73 65 74 0a 20 5d  |uffer._offset. ]|
00000270  0a 09 4d 4f 56 09 72 30  2c 20 23 24 6e 6f 0a 09  |..MOV.r0, #$no..|
00000280  53 57 49 09 57 6f 72 64  0a 09 4d 45 4e 44 0a 0a  |SWI.Word..MEND..|
00000290  09 4d 41 43 52 4f 0a 09  77 72 69 74 65 73 09 24  |.MACRO..writes.$|
000002a0  41 72 67 31 0a 09 41 44  52 09 72 30 2c 20 25 46  |Arg1..ADR.r0, %F|
000002b0  30 30 0a 09 53 57 49 09  57 72 69 74 65 30 0a 09  |00..SWI.Write0..|
000002c0  42 09 25 46 30 31 0a 30  30 0a 09 3d 09 22 24 41  |B.%F01.00..=."$A|
000002d0  72 67 31 22 0a 09 3d 09  30 0a 09 41 4c 49 47 4e  |rg1"..=.0..ALIGN|
000002e0  0a 30 31 0a 09 4d 45 4e  44 0a 0a 09 4d 41 43 52  |.01..MEND...MACR|
000002f0  4f 0a 09 77 72 69 74 65  6c 6e 20 24 41 72 67 31  |O..writeln $Arg1|
00000300  0a 09 41 44 52 09 72 30  2c 20 25 46 30 30 0a 09  |..ADR.r0, %F00..|
00000310  53 57 49 09 57 72 69 74  65 30 0a 09 42 09 25 46  |SWI.Write0..B.%F|
00000320  30 31 0a 30 30 0a 09 3d  09 22 24 41 72 67 31 22  |01.00..=."$Arg1"|
00000330  0a 09 3d 09 31 30 2c 20  31 33 2c 20 30 0a 09 41  |..=.10, 13, 0..A|
00000340  4c 49 47 4e 0a 30 31 0a  09 4d 45 4e 44 0a 0a 09  |LIGN.01..MEND...|
00000350  4d 41 43 52 4f 0a 09 77  72 63 68 09 24 41 72 67  |MACRO..wrch.$Arg|
00000360  31 0a 09 53 57 49 09 26  31 30 30 2b 22 24 41 72  |1..SWI.&100+"$Ar|
00000370  67 31 22 0a 09 4d 45 4e  44 0a 0a 3b 0a 3b 20 4f  |g1"..MEND..;.; O|
00000380  53 42 59 54 45 20 6e 75  6d 62 65 72 73 0a 43 68  |SBYTE numbers.Ch|
00000390  61 6e 67 65 4f 75 74 70  75 74 09 09 2a 09 33 0a  |angeOutput..*.3.|
000003a0  43 6f 6e 74 72 6f 6c 43  75 72 73 6f 72 45 64 69  |ControlCursorEdi|
000003b0  74 69 6e 67 09 2a 09 34  0a 53 65 74 41 75 74 6f  |ting.*.4.SetAuto|
000003c0  52 65 70 65 61 74 44 65  6c 61 79 09 2a 09 31 31  |RepeatDelay.*.11|
000003d0  0a 53 65 74 41 75 74 6f  52 65 70 65 61 74 52 61  |.SetAutoRepeatRa|
000003e0  74 65 09 2a 09 31 32 0a  44 69 73 61 62 6c 65 45  |te.*.12.DisableE|
000003f0  76 65 6e 74 09 09 2a 09  31 33 0a 45 6e 61 62 6c  |vent..*.13.Enabl|
00000400  65 45 76 65 6e 74 09 09  2a 09 31 34 0a 52 65 73  |eEvent..*.14.Res|
00000410  65 74 53 6f 66 74 4b 65  79 73 09 09 2a 09 31 38  |etSoftKeys..*.18|
00000420  0a 4b 65 79 62 6f 61 72  64 53 63 61 6e 09 09 2a  |.KeyboardScan..*|
00000430  09 31 32 31 0a 47 65 74  42 75 66 66 65 72 53 74  |.121.GetBufferSt|
00000440  61 74 75 73 20 09 2a 09  31 32 38 0a 49 6e 73 65  |atus .*.128.Inse|
00000450  72 74 49 6e 74 6f 42 75  66 66 65 72 09 2a 09 31  |rtIntoBuffer.*.1|
00000460  33 38 0a 52 65 6d 6f 76  65 46 72 6f 6d 42 75 66  |38.RemoveFromBuf|
00000470  66 65 72 09 2a 09 31 34  35 0a 52 65 61 64 50 61  |fer.*.145.ReadPa|
00000480  67 65 46 43 09 09 2a 09  31 34 36 0a 57 72 69 74  |geFC..*.146.Writ|
00000490  65 50 61 67 65 46 43 09  09 2a 09 31 34 37 0a 52  |ePageFC..*.147.R|
000004a0  65 61 64 57 72 69 74 65  54 61 62 43 68 61 72 61  |eadWriteTabChara|
000004b0  63 74 65 72 09 2a 09 32  31 39 0a 52 65 61 64 57  |cter.*.219.ReadW|
000004c0  72 69 74 65 45 73 63 61  70 65 53 74 61 74 75 73  |riteEscapeStatus|
000004d0  09 2a 09 32 32 39 0a 3b  0a 3b 20 4f 53 57 4f 52  |.*.229.;.; OSWOR|
000004e0  44 20 6e 75 6d 62 65 72  73 0a 3b 0a 52 65 61 64  |D numbers.;.Read|
000004f0  43 6c 6f 63 6b 09 2a 09  31 0a 57 72 69 74 65 43  |Clock.*.1.WriteC|
00000500  6c 6f 63 6b 09 2a 09 32  0a 52 65 61 64 54 69 6d  |lock.*.2.ReadTim|
00000510  65 72 09 2a 09 33 0a 57  72 69 74 65 54 69 6d 65  |er.*.3.WriteTime|
00000520  72 09 2a 09 34 0a 3b 0a  3b 20 45 76 65 6e 74 20  |r.*.4.;.; Event |
00000530  6e 75 6d 62 65 72 73 0a  3b 0a 42 75 66 66 65 72  |numbers.;.Buffer|
00000540  45 6d 70 74 79 45 76 65  6e 74 09 2a 09 30 0a 42  |EmptyEvent.*.0.B|
00000550  75 66 66 65 72 46 75 6c  6c 45 76 65 6e 74 20 09  |ufferFullEvent .|
00000560  2a 09 31 0a 4b 65 79 62  6f 61 72 64 45 76 65 6e  |*.1.KeyboardEven|
00000570  74 09 09 2a 09 32 0a 41  44 43 45 76 65 6e 74 09  |t..*.2.ADCEvent.|
00000580  09 2a 09 33 0a 56 73 79  6e 63 45 76 65 6e 74 09  |.*.3.VsyncEvent.|
00000590  09 2a 09 34 0a 54 69 6d  65 72 45 76 65 6e 74 09  |.*.4.TimerEvent.|
000005a0  09 2a 09 35 0a 45 73 63  61 70 65 45 76 65 6e 74  |.*.5.EscapeEvent|
000005b0  09 09 2a 09 36 0a 45 63  6f 6e 65 74 45 76 65 6e  |..*.6.EconetEven|
000005c0  74 09 09 2a 09 32 35 34  0a 0a 3b 20 41 72 67 75  |t..*.254..; Argu|
000005d0  6d 65 6e 74 73 20 66 6f  72 20 43 48 41 4e 47 45  |ments for CHANGE|
000005e0  4f 55 54 50 55 54 20 4f  53 62 79 74 65 20 63 61  |OUTPUT OSbyte ca|
000005f0  6c 6c 0a 52 53 34 32 33  4f 6e 6c 79 09 2a 09 31  |ll.RS423Only.*.1|
00000600  2b 32 2b 34 2b 26 31 30  0a 50 72 69 6e 74 65 72  |+2+4+&10.Printer|
00000610  4f 6e 6c 79 09 2a 09 32  2b 38 2b 26 31 30 0a 56  |Only.*.2+8+&10.V|
00000620  44 55 4f 6e 6c 79 20 09  2a 09 34 2b 26 31 30 0a  |DUOnly .*.4+&10.|
00000630  0a 3b 20 42 75 66 66 65  72 20 6e 75 6d 62 65 72  |.; Buffer number|
00000640  73 0a 3b 0a 4b 42 42 75  66 66 65 72 09 2a 09 30  |s.;.KBBuffer.*.0|
00000650  0a 53 65 72 69 61 6c 49  6e 42 75 66 66 65 72 09  |.SerialInBuffer.|
00000660  2a 09 31 0a 53 65 72 69  61 6c 4f 75 74 42 75 66  |*.1.SerialOutBuf|
00000670  66 65 72 20 2a 09 32 0a  50 72 69 6e 74 65 72 42  |fer *.2.PrinterB|
00000680  75 66 66 65 72 09 2a 09  33 0a 53 6f 75 6e 64 31  |uffer.*.3.Sound1|
00000690  42 75 66 66 65 72 09 2a  09 34 20 3b 20 46 69 72  |Buffer.*.4 ; Fir|
000006a0  73 74 20 73 6f 75 6e 64  20 62 75 66 66 65 72 0a  |st sound buffer.|
000006b0  0a 09 45 4e 44 0a                                 |..END.|
000006b6