• Please review our updated Terms and Rules here

Does anyone know anything about Advance86 BASIC?

krebizfan

Veteran Member
Joined
May 23, 2009
Messages
6,338
Location
Connecticut
I have been trying to run the demo program for the Genie 16 (the Advance 86 as sold in Germany) under GWBASIC and running into errors. The SCREEN function that causes the error seems to work on its own so I am a bit confused. So does anyone know of any alterations Advance made to their BASIC interpreter beyond the necessary changes to port addresses? Since the BASIC code for the demo makes no use of port addresses, I doubt the hardware differences from the IBM 5150 with CGA are the cause of difficulty.
 
And please provide the SCREEN statement as it is specified within the BASIC source code that is creating the error.

There should be some parameters after the word SCREEN to indicate what mode is desired (e.g. 40 or 80 column text mode and medium or high resolution graphics).

I am note sure whether some variants of the machine were shipped with 'text only' options or whether they were all shipped with both the text and graphics options. One thought (thinking out loud) is that your machine is equipped with only text mode capabilities and the BASIC program requires graphics to run.

The other option is a faulty BASIC program where "SCREEN" is specified but no parameters.

So, when you state that the SCREEN function works on its own - are you typing exactly the same as it is specified within the BASIC program or not?

Another possibility I have seen is a corrupt BASIC program where non-printable characters are stored as part of the BASIC line (which the BASIC interpreter sees and is unhappy with) but appear invisible when the program is listed. Typing the command in (as displayed) may then work.

I used to deliberately do this with BBC BASIC to 'hide' some of the source code. In this case, the BASIC would RUN Ok, but when listed it would appear to list Ok but would not run correctly if typed from the listing.

My use was deliberate though...

Where did you get the demo program from? Did you type it in from a listing or obtain it from somewhere as an electronic copy?

We used to use Ferranti Advance 86b machines at work - but it is that long ago now... I was having a look around the dark recesses of work the other day to see if any were lurking in cupboards or unused rooms. I couldn't find any though...

EDIT: SCREEN can also be used as a function to identify what character/colour is stored at the specified X,Y coordinates. So is your problem with the SCREEN statement or function?

Yes, it would be useful to know what the error message and code actually was/is...

Incidentally, the manual I am using was found here http://oldcomputers-ddns.org/public...16/genie16_preliminary_user_guide_bw_full.pdf. At the end of the manual is the abbreviated list of statements and functions and the error messages.

Dave
 
Last edited:
The demo file is located as DEMO.BAS at http://oldcomputers-ddns.org/public/pub/rechner/eaca/genie_16/image/advance-86/d1/index.html

The statement that gives a "Illegal Function Call" when run in the program but works on its own is

Code:
12010 SCREEN 1,0 
12011 ZL=25 
12012 SP=20 
12013 CM=" > Weiter mit ENTER <"
12014 V=0 
12015 H=SW 
12016 CI="0123456789 "+ENT 
12017 COLOR H,V 
12018 CLS

Originally, that was a compound statement which I have broken up trying to determine which part is at issue. The error remained with line 12010. I have commented out the call that does a GOSUB to the 12000 subroutine causing it to fail in the next subroutine.

I suspect that one of the earlier sections that seems to run is leaving the system in a mode that it doesn't understand or the Advance defaulted to a larger stack.
 
There doesn't look to be anything wrong with the "SCREEN 1,0" statement - it should select a medium resolution graphics screen with the colour burst enabled.

Of course, the error "Illegal Function Call" is the 'not very helpful error' that all programmers use... An error occurred - find it yourself!

Dave
 
I think it is a memory corruption issue of some kind. Skipping over that subroutine causes the next subroutine to fail with an "Input Past End" in the same line of code that waits for ENTER to be pressed and has run about 10 times before.

It could be that
The demo never worked.
It worked but only because of how Advance patched their BASICA.
Advance did something unusual with the stack or handling the "ELSE RETURN" clause in those complex multi-statement lines that standard GW-BASIC doesn't.

But if there is no information available, I will just putter around testing out a few ideas for as long as it amuses me.
 
Back
Top