VIC-1211A and VIC-1211M -- What's the difference?

History and Preservation Issues

Moderator: Moderators

User avatar
eslapion
ultimate expander
Posts: 5458
Joined: Fri Jun 23, 2006 7:50 pm
Location: Canada
Occupation: 8bit addict

Re: VIC-1211A and VIC-1211M -- What's the difference?

Post by eslapion »

@Mike
I know of very few people who have the IEEE-488 interface but BASIC V4 can be used with any disk drive (IEC).

As a trio, would it be possible to have SE, PA and BV4 ?
Be normal.
User avatar
Mike
Herr VC
Posts: 4840
Joined: Wed Dec 01, 2004 1:57 pm
Location: Munich, Germany
Occupation: electrical engineer

Re: VIC-1211A and VIC-1211M -- What's the difference?

Post by Mike »

eslapion wrote:As a trio, would it be possible to have SE, PA and BV4 ?
That would be technically possible, but impractical for a number of reasons:

1. Both SE and V4 implement their BASIC extension with extra tokens. The byte range of these tokens overlap. One would need to move the token numbers of one of the extensions (take your pick). For new (user) programs, this wouldn't matter, but old programs saved with one of the BASIC extensions then would get their commands and functions confused with the commands and functions of the other extension. This is not a special concern of SE and V4, that is an issue as soon as one wants to combine any two BASIC extensions with a tokenizer and detokenizer. One then needs to list the old programs and then re-tokenize them. Programmers' Aid is not affected, because it implements its commands with a CHRGET wedge. This works on it own, independently of SE's or V4's (de-)tokenizer and token dispatch routine - but it only allows for commands in direct mode! That restriction thankfully isn't relevant for PA, as its commands don't have a sensible use within running programs.

2. SE and V4 deliver even less in combination than they do on their own: the graphics commands of Super Expander leave much to be desired - a useless re-scaling co-ordinate system, a line routine that puts unwanted extra pixels to the left and right of the ideal Bresenham algorithm, a circle routine that doesn't draw circles but wavy circle-like polygons, no commands to save and load the graphics screen (those are even missing in BASIC V3.5 and V7!), no commands to put a bitmap to display (like SSHAPE/GSHAPE, but faster). OTOH, V4 extends BASIC with the disk commands of the "real" V4 of the big CBMs, but it is still missing the better string garbage collection and neither does it provide commands for structured programming. If one is accustomed to the slightly more cryptic commands of CBM DOS, a comparable tool can be had with the DOS Wedge. That one even works together with SE but excludes PA, as DOS Wedge and PA conflict by both using the CHRGET wedge method to provide their function.

Other than that it amounts to reverse engineering source from object code, identifying all relevant routines associated to the tokens to regroup them all into one "big" BASIC extension, etc. One could quite as well attempt a port of BASIC V3.5. The result would likely be similar, at least the token disarray would be settled (taking the token list of V3.5 as standard) and this would even include most comfort functions of VIC-20 Programmers' Aid.
User avatar
eslapion
ultimate expander
Posts: 5458
Joined: Fri Jun 23, 2006 7:50 pm
Location: Canada
Occupation: 8bit addict

Re: VIC-1211A and VIC-1211M -- What's the difference?

Post by eslapion »

Mike wrote:... Both SE and V4 implement their BASIC extension with extra tokens. The byte range of these tokens overlap...
I guess that's what you could call the final nail in the coffin...

At least we can get SE and PA combined which is already a great bundle.
Be normal.
User avatar
Mike
Herr VC
Posts: 4840
Joined: Wed Dec 01, 2004 1:57 pm
Location: Munich, Germany
Occupation: electrical engineer

Re: VIC-1211A and VIC-1211M -- What's the difference?

Post by Mike »

eslapion wrote:At least we can get SE and PA combined which is already a great bundle.
And, not to forget, with the $B000 version of PA, all RAM in BLK1..3 is usable for BASIC. :)
Post Reply