Q. Do I have a bug in my Oric 1? I typed in the following program, which should produce a filled circle, but I got some odd results instead.
10 HIRES
20 PRINT CHR$(17):'Cursor off
30 FILL 1,1,155
40 CURSET 120,100,1:'Centre of screen
50 CIRCLE 99,1:'Biggest possible circle
60 FOR N=1 TO 99
70 CIRCLE N,1
80 NEXT
J. Reed, Westhoughton, Bolton
A. Line 30 of your program is the culprit: it places a value of 155 in the first byte of the HIRES screen. 155 is the attribute code for TEXT 50Hz, and quite why you want this on the HIRES screen is beyond us. Anyway, the screen controller looks at this, thinks 'OK, I'm dealing with a TEXT screen' and updates or refreshes the display on that basis.
The TEXT screen begins at address 4800, but the HIRES screen begins at 40960, so the refreshing is only done from 48000, because the controller thinks it's handling a TEXT screen. Consequently, while the graphics commands are writing to memory between 40960 and 49119, what appears on the screen is the contents of addresses between 4800 and 49119. So, the top part of the graphics screen doesn't appear on the display and explains why you get half-ellipses descending down the screen when the concentric circles are drawn.
FILL 1,1,155 effectively sets up a TEXT window over the bottom part of the graphics memory, which thoroughly confuses the display.