Тёмный

Microsoft BASIC-80 In Secret? VTech's PreBASIC 

8-Bit Show And Tell
Подписаться 56 тыс.
Просмотров 23 тыс.
50% 1

While playing with the VTech PreComputer 1000 from 1988, I got curious about the origin of the Pre-BASIC V1.0 built-into it. Did VTech really make an original BASIC for this toy computer? Knowing that the system has a Z80 CPU, we'll examine the BASIC in situ to see if it matches Microsoft's BASIC-80 in substantial ways. While there seem to be some small changes and several omissions, we find it has much in common with BASIC-80 and other Microsoft BASICs such as those on the Commodore 64.
Previous PreComputer Video: • VTech PreComputer 1000...
DJ's channel: / djsures
BASIC-80 manual: www.bitsavers.org/pdf/microsof...
To support 8-Bit Show And Tell:
Become a patron: / 8bitshowandtell
One-time donation: paypal.me/8BitShowAndTell
2nd channel: / @8-bitshowandtell247
Index:
0:00 Previously...
1:03 Is it MS BASIC?, -1=True, Line 0, Goto
4:11 Maximum line number: 65529
5:56 String heap fun
9:10 Maximum heap size
10:55 Variable names
13:01 Commands missing
14:00 Floating point: single-precision "6 digit"
15:32 Two-letter error codes, IF/ELSE
17:18 Differences: CHR$(), RND()
18:56 Undocumented: Integer variables, ON..GOTO, Multi-dimensional arrays
22:13 Remnants: double-precision, hex, DEF FN
26:05 BASICly sure it's BASIC-80, thanks!

Наука

Опубликовано:

 

3 авг 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 220   
@8bitwiz_
@8bitwiz_ 8 месяцев назад
Yes it is. I have one of these with a socketed ROM, easily dumped. The code is a patched over a copy of TRS-80 BASIC. Unused keywords are simply written over with nulls to disable them, then the code that they occupied can be reused for custom I/O support. It even adds a new keyword SOUND, which reuses the token for ERROR. Side-by-side comparison shows that most of the code is identical, and at the original addresses. It even still has the original TRS-80 SET/RESET graphics code at 0132. Whether it was copied from a Model I or Model III is somewhat hard to tell, but the code addresses for CSAVE and CLOAD are both above 3000. One interesting thing is that at 3CEC, in the address space that is used by the keyboard in a real TRS-80, is a complete set of long error messages. It seems like this had previously been hacked with a few other custom keywords that still have code addresses above 3000, but were disabled for the Pre-Computer. Perhaps it came from some unknown TRS-80 clone before being used in the Pre-Computer. But that is only half of the ROM. The other half is full of your usual toy computer math quiz type stuff.
@8_Bit
@8_Bit 8 месяцев назад
Great info, thanks!
@colinstu
@colinstu 7 месяцев назад
Could a new ROM be written where the keywords are patched back in? Or at the very least do something to fix having to press Enter like suggested in the vid?
@AshWeststar
@AshWeststar 7 месяцев назад
@@colinstu yes.
@ChristianKoehler77
@ChristianKoehler77 8 месяцев назад
I had a version of this computer that was localized for Germany when I was 11. It was called "Mister X". It had German keyboard layout including German special characters (Ä,Ö,Ü,ẞ). The quiz games, the typing lessons and even the built in basic examples had German text. Impressive, given typing lessons are not trivial to localize and most 8 bit computers did not get localized beyond TV standards and power supply. It said "Mister X Basic" instead of "Pre Basic" when starting Basic. I am pretty sure, the German manual did in fact mention multi dimensional arrays. It took me some time to understand that concept at age 11. Even as an 11 year old, I was frustrated because you could not print without waiting for the user to press enter. When I got a Commodore 64, I was shocked that it was actually much slower on some basic tests like adding up 1...1000 using a for loop. Other than that, the C64 was a great upgrade, obviously.
@aliotard
@aliotard 8 месяцев назад
I own a french clone called "ORDISAVANT" sold by Yeno. It has an AZERTY keyboard with the french accents (é,è,ç,à,ù) but sadly lacks some special characters like @ and %
@AndreasToth
@AndreasToth 8 месяцев назад
​@@aliotardoh no, so no way to send someone an e-mail! 😂
@nooboard
@nooboard 7 месяцев назад
I had it too (Mister X). I also had access to a Atari 1024 ST and it was much more helpfull to learn programming at that time. The display of this "computer" was anoying and no possibility to safe what you have done if I remember it correctly. But I was not digging that deep back the days because drawing graphics on the Atari was much more interesting than one line of text. At the end I only used it to learning to type.
@TravisTev
@TravisTev 8 месяцев назад
In the mid-late 1990s we had a PreComputer Power Pad which seemed to have an enhanced LCD (with four lines, I believe) and built-in BASIC. It seemed similar to this one, but I seem to recall that CHR$() indeed accepted values up to 255 and actually had “hidden” characters that were not mentioned in the manual. PRINT would still pause after each line, but perhaps it was less restrictive because I remember being able to repeatedly print a single line at a time without a pause by using a loop that cleared the screen (CLS) followed by a PRINT with a suffixed semicolon and then creating an appropriate time delay; it doesn't look like that would have worked on the machine in this video. Interestingly, the Power Pad's parser recognized commands like LOAD but always immediately responded with “?DISK ERROR” or something similar, and I don't believe this feature was actually implemented, though I could be wrong. The model did advertise an add-on cartridge for saving BASIC programs or expanding its memory, but I never had one so I don't know exactly how it worked. Without a cartridge, the Power Pad was at least capable of remembering the last BASIC program entered when powered off as long as the batteries were not removed, though.
@BenHeckHacks
@BenHeckHacks 8 месяцев назад
That keyboard looks pretty sweet. Might be worth getting just for that.
@8_Bit
@8_Bit 8 месяцев назад
Just to clarify, it's crappy compared to an Apple IIc or C64 or "fairly good" keyboard like that. But it's way better than any toy or membrane keyboard. Like, I can type 40 or 50 wpm on this thing.
@nibble21
@nibble21 6 месяцев назад
I had this as a kid and this little computer was the reason i got into programming. Love that video!
@Jason-co9ep
@Jason-co9ep 8 месяцев назад
The Pre-Computer 1000 was my introduction to computers and programming. I still have mine somewhere, but I think the LCD went out on it. I need to dig it out and see if I can repair it. If I remember correctly you could purchase expansion carts, one of which was used solely to save BASIC programs you had written.
@der.Schtefan
@der.Schtefan 8 месяцев назад
The explanation of BASIC dialects in the manual is hilarious! 😂😂😂
@BastetFurry
@BastetFurry 8 месяцев назад
Before it goes under in a subthread here, the machine is emulated in MAME, the ROMs are easily available and from what i can gather when looking at the example programs inside the ROM it uses different tokens than the C64s one but this smells so like MSBASIC... In the ROM i have, 27-00780-002-002.u4, the BASIC examples start at 0x17000. And the interpreter seems to start at 0x3800 on first glance. And looking at the token list starting at 0x5650 they took the lazy route with removing commands and just zeroed them out. 🤣
@8_Bit
@8_Bit 8 месяцев назад
Very interesting; I didn't realize MAME was now handling weird devices like this. I used to be into MAME but it's been, (crazy now that I think about it), probably 20 years...
@bitwize
@bitwize 8 месяцев назад
MAME merged with MESS and is now a general-purpose, old-hardware-preservation platform. Terminals, synthesizers, Game and Watch devices, kids' calculators and computers... if it's electronic, someone has an interest in preserving it with MAME.
@smf3472
@smf3472 8 месяцев назад
The token list has bit 7 set in the first character, Microsoft have bit 7 in the last character. The error table ordering is the same as microsoft basic, but the text is different & they are often shorter and they are all packed together. So I'm not sure it's a lazy hack of basic80, or even derived from the code base. It may have just been someone who looked at basic80. It may not originally have been written for this product either.
@BastetFurry
@BastetFurry 8 месяцев назад
@@smf3472 One might think VTech bought the source once for 8080/Z80 and then hacked away for all their machines. That their edutainment devices had BASIC was a second usage anyway, they have a quite large line of BASIC computers, David The 8-Bit Guy Murray did a video on them once.
@8bitwiz_
@8bitwiz_ 8 месяцев назад
It is specifically some version of TRS-80 Level II BASIC. Most of the code is byte-for-byte identical, and they even left in the code for SET/RESET graphics, which is useless without the TRS-80 video display. And the TRS-80 version had bit 7 set in the first character. Then they dropped nulls into the keyword table to disable a bunch of keywords.
@TommyViper
@TommyViper 8 месяцев назад
Wow, to think that this was recommended to me and yet, I had this model computer when I was a young child. This is one heck of a trip down memory lane, although I never used it to its true capability.
@cjh0751
@cjh0751 8 месяцев назад
Robin don't worry about the stomping noises on your video. I also have elephants living upstairs in my house.
@rarbiart
@rarbiart 8 месяцев назад
I really appreciate the effort put into this!
@ChopsticksDIYGarden
@ChopsticksDIYGarden 9 дней назад
I had a foldable pocket computer from RadioShack when I was in college. I forgot the model. It had a few lines of text and a great keyboard. It had BASIC that's why I bought it. The good old days.
@10p6
@10p6 8 месяцев назад
Interesting video. Would have been awesome if they had included a Tape and Video connector, even if it was a small expansion cart to add the functionality.
@noland65
@noland65 8 месяцев назад
Some more constructs related to (portable) BASIC-80 variants to check (from the TRS-80 Model 100 and the NEC PC-8201A): VARPTR() and HIMEM system variable (Model 100), cursor positioning with either PRINT@ (Modell 100) or LOCATE (NEC), CALL [, A [, HL] ] (Model 100) or EXEC (NEC), OUT Z-80 port command, INP Z-80 port command, VT-52-style ANSI escapes with PRINT. Also: DEFDBL, DEFINT, DEFSNG, DEFSTR (define var-list as specified format w/o suffix) ERROR n, ERRL, ERR (simulate error #n, last error line, error number) FIX() (format number to fixed) POWER n, POWER CONT, POWER OFF, RESUME (power management) INKEY$ (system var instead of GET) KEY, KEY LIST, KEY ON/OFF/STOP (related to keyboard shortcuts) Some may be fun. E.g., if OUT and INP work, you should be able to hack the LCD (if you can reverse engineer to what ports the LCD drivers connect to and what the layout and the protocol is - if there is a datasheet for the driver chips, this may be doable). If INKEY$ is present, this should allow for for some arcade action. If not, but INP is, you may be able to read the keyboard by this, if the keyboard is read via the Z-80 port (which is a probable solution for a Z-80 system).
@smf3472
@smf3472 8 месяцев назад
it's emulated already, so the ports are known. However BASIC doesn't support OUT and INP. The parser understands: END, FOR, NEXT, DATA, INPUT, DIM, READ, LET, GOTO, RUN, IF, RESTORE, GOSUB, RETURN, REM, STOP, ELSE, SOUND, ON, PRINT, CONT, LIST, CLEAR, NEW, TO, THEN, NOT, STEP, +, -, *, /, ^, AND, OR, >, =,
@mikegarland4500
@mikegarland4500 8 месяцев назад
The more I see of this Pre-Computer, the more I'm convinced I would have loved the thing as a kid. I'm still glad I was fortunate enough to get a C64 when I did, but this would have definitely been a nice precursor to that if the timing had allowed it.
@DomsBadTech
@DomsBadTech 6 месяцев назад
I enjoyed this video a lot more than I have any reason too. I always wanted a VTech Computer as a kid, but than at Age 6 or 7 I got a Atari 130XE and learned programming on that machine. Its such a pity: My daughter enjoys all comforts of having access to modern technology, but nothing comes close to the simplicity of this old tech and the fealing I had back than when I finally got a program to work. Anyway: Thank you Robin for this exploration!
@duodream
@duodream 8 месяцев назад
The ROM has already been dumped and there's a preliminary driver for it in MAME, labeled pc1000.
@josch1710
@josch1710 8 месяцев назад
Vtech licenced Microsoft Basic for the Laser128 (Apple II clone), released in 1986. I think, they were clever and licenced it for all their computers, or they now had a working relation with MS and were able to acquire more licences.
@geoffgunn9673
@geoffgunn9673 8 месяцев назад
more like they made one license cover all
@PhrontDoor
@PhrontDoor 8 месяцев назад
That was an amazing product for the time and the price!
@fnjesusfreak
@fnjesusfreak 8 месяцев назад
Could L3 be "Advanced Feature", and a sign of this being specifically TRS-80 BASIC?
@solarbirdyz
@solarbirdyz 8 месяцев назад
I had a thought: there were some legal and illegal TRS-80 clones coming out of Taiwan and similar places in the 1980s (just as there were Apple 2 clones, including ones made by VTech) that had pirated Radio Shack/Microsoft BASICs, maybe it's derived from one of those, so it's a derivative of a derivative? I don't recall VTech making a TRS-80 clone but they could've grabbed the BASIC from someone else local.
@RudysRetroIntel
@RudysRetroIntel 8 месяцев назад
Excellent investigation!! I'm sure DJ could modify this computer to have a larger screen. Even modify the ROM. Thanks for sharing
@jnharton
@jnharton 8 месяцев назад
I think you would need to modify the ROM in order to use a larger screen effectively.
@Okurka.
@Okurka. 8 месяцев назад
Maybe he'll even develop Cloud CP/M for it.
@pikadroo
@pikadroo 8 месяцев назад
I have always been curious about these. 😜
@dougjohnson4266
@dougjohnson4266 8 месяцев назад
I am surprised that the keyboard keys are shaped so well. Kind of Apple IIgs like and very rare for many computers of the 80's.
@MrRobarino
@MrRobarino 7 месяцев назад
The compact keyboard shape is actually reminiscence of the keyboard for an Apple IIc or IIc+.
@highscalezofficial
@highscalezofficial 4 месяца назад
I learned programming on this thing. When I got a 086 I realized I can use those instructions for GWBasic,
@damouze
@damouze 8 месяцев назад
At 25:11, did you also try DEFFNA(X)=2*X (without the spaces)? I recall MS BASIC variants sometimes being picky about these things, and maybe if the designers of this computer did not intend to remove the possibility for user defined functions, it could be that the BASIC dialect is somewhat different and parses the DEF FN ...() and the FN ..() slightly differently and maybe removing the spaces will work. In general, many BASIC variants don't care about whitespace, but some do, and some do in very odd circumstances.
@8_Bit
@8_Bit 8 месяцев назад
Unfortunately I didn't. I'm used to putting a space between them since most of the examples in the Commodore 64 Programmer's Reference Guide have a space between FN and the function name. But yes, that could be the problem. Unfortunately I no longer have the machine; we'll have to ask DJ Sures to give it a try.
@jnharton
@jnharton 8 месяцев назад
Although you can type that without a syntax error, my recollection is that you end with a variable called 'FNA'...
@8bitwiz_
@8bitwiz_ 8 месяцев назад
The DEF and FN keywords are both among the ones that were zapped out. But it's not supported in rom TRS-80 BASIC anyhow, you had to load disk basic.
@retrozmachine1189
@retrozmachine1189 8 месяцев назад
The L3 error at 25:02, a call to a feature not supported in the L2 ROM was made. On the TRS-80 MI/III disk basic not only extended the keyword table, it also added support for L3 functions and keywords present in the ROMs.
@8_Bit
@8_Bit 8 месяцев назад
Very interesting - so that L3 error is specifically a reference to the TRS-80 "Level 3" BASIC?
@retrozmachine1189
@retrozmachine1189 8 месяцев назад
@@8_Bit Not really sure, but I think it was more likely just a generic handler in Microsoft's standard L2 BASIC to trap disk and extended commands. I rarely used the ROM only basic on my MIII but enough to accidentally type in a disk related command and trigger it.
@jjjacer
@jjjacer 8 месяцев назад
wounder if i still have my old vtech precomputer 1000 board (i removed it and put a raspi in the case)
@PeranMe
@PeranMe 8 месяцев назад
Interesting, 65529 is the max allowed line number in the MS Basic in the Spectravideo 318/328 too. Why do I still remember that… 😂
@Damaniel3
@Damaniel3 8 месяцев назад
65529 is a weird maximum line number - I have to wonder why they don't support the full 16-bit range (i.e. up to 65535). Perhaps those last few values are reserved by the interpreter for some reason...
@8_Bit
@8_Bit 8 месяцев назад
Yes, I think they were reserved but I'm not sure if they were ever used for anything.
@cblusb
@cblusb 8 месяцев назад
Pehraps one line number can be reserved for commands entered in immediate mode@@8_Bit
@colinstu
@colinstu 7 месяцев назад
You put it through its paces! I'd be curious if a ROM dump would potentially show anything else. edit: after reading the comments: it's already been dumped, and yes, lol.
@waterup380
@waterup380 8 месяцев назад
If I knew it had all this capability when I had one back in I was a kid I would did more then just treat it has a typewriter. I could of learned how to use basic and more. but had no manual so who knew this at all not me. thanks for the video and showing what this thing can do
@NeilRoy
@NeilRoy 8 месяцев назад
Nice little machine, but without a save feature and that one line screen size I dunno.. my dad owned one of the Radio Shack hand held ones you mentioned. I would think that at LEAST a basic cassette save feature, like how the first TRS-80s done it would be minimal. I recall learning to program on the TRS-80 model 2, loved the BASIC it had with the PRINT@ feature and special character graphics.
@another3997
@another3997 8 месяцев назад
That's probably why it was called "Pre-Basic" on a "Pre-Computer". You didn't pay a proper portable computer price, but you didn't get a 'proper' portable computer. I daresay an enterprising electronics whizz could find a way to save a program or increase the screen size... although most people would just buy a better computer once they found out their child enjoyed programming.
@BBC600
@BBC600 7 месяцев назад
Yes I think as a kid one would be discouraged to write a big program for the machine or type one in solely due to the fact that you couldn't recall it once you had turned it off or if the batteries died due to a lack of save functionality.
@aresaurelian
@aresaurelian 8 месяцев назад
When I was a kid, me and my friend dreamed about computers like this.
@HelloKittyFanMan
@HelloKittyFanMan 8 месяцев назад
On a freshly started Commodore 64 we get the same responses as if the variables had already been cleared ("string too long," 89, 255, "1 2 3... 88").
@yesterdaysrose5446
@yesterdaysrose5446 8 месяцев назад
Robot Korben Dallas: "Listen, lady, I only speak two languages: Microsoft BASIC and bad Microsoft BASIC."
@MK-ge2mh
@MK-ge2mh 8 месяцев назад
On other Microsoft BASICs, there must be no space between the FN and the function name as you did with FN A(20). 10 DEF FNA(X)=10*X 20 PRINT FNA(20)
@8_Bit
@8_Bit 8 месяцев назад
On the Commodore BASICs I'm familiar with, it works fine with or without the space between FN and the function name. On which platforms is it picky about spaces?
@8_Bit
@8_Bit 8 месяцев назад
I looked in the BASIC-80 manual and there's no spaces between FN and the function name in the examples, so maybe that was the problem here. Thanks for bringing it up. My Commodore upbringing trips me up yet again when dealing with other platforms!
@Ts6451
@Ts6451 8 месяцев назад
If this uses one of the common LCD modules using the HD44780 or similar, the limits on CHR$() might have been there to limit use to the alphanumeric and more common symbols. Perhaps they thought that the symbols outside that range would be confusing, since it would be mostly less common symbols and characters not used in English, the 0-15 would be the 8 user defined characters repeated twice, I believe,
@Okurka.
@Okurka. 8 месяцев назад
It uses an Epson SED1200D-0B LCD Controller.
@JohnnyWednesday
@JohnnyWednesday 8 месяцев назад
A poke, a poke, my kingdom for a poke!
@MyChannel-vm6dw
@MyChannel-vm6dw 8 месяцев назад
Retro computing comedy gold @16:04 😅😂😊
@TheHighlander71
@TheHighlander71 8 месяцев назад
It would be cool to look for typical microsoft code or even easter eggs in the rom. But without a PEEK command that will require examining a ROM dump, if those even exist.
@smf3472
@smf3472 8 месяцев назад
They do exist and it's been emulated for a long time. The RST $20 code looks similar to pre-CPM versions of BASIC80, but those were often incompatible with Z80 (for example Altair BASIC). The token list and error messages aren't encoded in the same way as those early versions either. I haven't looked at later versions.
@Lion_McLionhead
@Lion_McLionhead 8 месяцев назад
Watching someone programming on a 20 character display is like a meme. There's definitely more telling than showing.
@HelloKittyFanMan
@HelloKittyFanMan 8 месяцев назад
Interesting that going above the line number limit returns a syntax error instead of an illegal-quantity error.
@OptimiSkeptic
@OptimiSkeptic 8 месяцев назад
This is because the line numbers are part of the allowable structure of the program, while "illegal-quantity" (or overflow) errors are thrown during the execution of the program. It's not a matter of going over a limit but rather going outside of an allowable set. It's about identical to what happens when you try to use a non-existent keyword, which also throws a syntax error.
@HelloKittyFanMan
@HelloKittyFanMan 8 месяцев назад
OK, interesting, @@OptimiSkeptic, thanks!
@RickSwartz
@RickSwartz 8 месяцев назад
It is extremely reminiscent of the Pocket Computer Basic implementations that Sharp and Casio used on their machines.
@AndyG-_-
@AndyG-_- 8 месяцев назад
Correct! I had a Sharp-1248 at the time, and it really felt more of a computer than the PreComputer: tape interface, 8kb RAM, albeit a worse keyboard...
@jnharton
@jnharton 8 месяцев назад
@@AndyG-_- Ironically, it's more that your pocket computer had more useful features.
@bosshat9821
@bosshat9821 8 месяцев назад
It handles RND just like Atari BASIC. Along those lines, have you checked for a VER command to show version information?
@the_kombinator
@the_kombinator 8 месяцев назад
I had one as a kid. I had the dictionary package on it. I recall it was pretty battery hungry on road trips.
@grappydingus
@grappydingus 8 месяцев назад
Would be cool to see a serial out mod and have this run into a terminal display.
@Alex_Valentine
@Alex_Valentine 8 месяцев назад
I was thinking the same.
@grappydingus
@grappydingus 8 месяцев назад
@@Alex_Valentine And, if you could somehow get a keyboard input, you could use an auto keystroke program to load programs!
@SteveGuidi
@SteveGuidi 8 месяцев назад
On the topic of the hash/number-sign character at 23:22, I learned from Jim Buitterfield's popular ML book that this is formally called an "octothorpe"; he uses the word a couple of times in his book and also puts the definition in the book's glossary. I suppose he wanted to communicate accurately!
@bluerizlagirl
@bluerizlagirl 8 месяцев назад
Also, in the UK variant of ASCII, position 35/$23 was used for the £ sign. Which was great but now some Americans are mistakenly calling the comment mark a "pound sign". Even although it has never appeared on our money!
@AureliusR
@AureliusR 8 месяцев назад
@@bluerizlagirl The # is called pound here due to telephone systems calling it that.
@bluerizlagirl
@bluerizlagirl 8 месяцев назад
@@AureliusR Maybe, but that is still a mistake. The symbol for a pound is £. It's on all the banknotes in my purse.
@AureliusR
@AureliusR 8 месяцев назад
@@bluerizlagirl Little bit UK-centric, no?
@bluerizlagirl
@bluerizlagirl 8 месяцев назад
@@AureliusR Well, there's a good reason for that! Anyway, other countries whose currency is called the pound use £ or a plain L, but never #.
@mycosys
@mycosys 8 месяцев назад
Theres a lot of comments about TRS-80 Basic. Tandy corp had discontinued the TRS-80 a decade earlier and were selling v-tech by the time this went into dev. I would imagine Tandy's MS Basic80 license held little value by about ~91, but having a pre-puter to sell did hold some value. I doubt v-tech even had to pay!
@mattklapman
@mattklapman 8 месяцев назад
commercial flash did not exist in the 80s. The only reasonable storage cartridge would be a high voltage PROM or a battery backed RAM. There was UV erasable, but that require a UV bulb box as an accessory. Maybe an Intel bubble memory cartridge?
@qwertykeyboard5901
@qwertykeyboard5901 8 месяцев назад
God damn it, now I want to add this thing to my "collection".
@EmperorKonstantine01
@EmperorKonstantine01 7 месяцев назад
Be interesting to see if an LCD guru out their invents a 4 to 5 line display mod for this thing, maybe its limited in its functionality or what it can do.
@awilliams1701
@awilliams1701 8 месяцев назад
ok BS error is pretty funny. Reminds me of the AMD Ryzen 1600 AF. lol I saw probably 4 reviews of it. Not one of them was able to review it without laughing. lol
@Michael_Knight823
@Michael_Knight823 8 месяцев назад
My fourth-grade classroom had the successor to the PC1000, called the PC2000.
@willman85
@willman85 8 месяцев назад
I used to have this as a kid. But we didn't have the manual!!!!! So the programming mode was absolutely useless to us. But I guess the full-size qwerty keyboard did make me feel more grown up. The Speak & Spell was a baby's toy by comparison... although its VFC display was cooler-looking (a pity they died out - an unfortunate casualty of technological progress).
@pikadroo
@pikadroo 8 месяцев назад
I got one for $10 on ebay and first off the size didn’t translate in the video it’s nearly as big as an apple iic but pretty light even with batteries. I had had a lot of fun with it already just playing the games but it needs to be cleaned. I am surprised how much fun I had with it.
@the8ctagon
@the8ctagon 8 месяцев назад
Much better vocals in the end credits this time than we're used to. I actually made it to the final second. Who is the artiste?
@8_Bit
@8_Bit 8 месяцев назад
That's what happens when my daughter takes the mic instead of me.
@Flashy7
@Flashy7 8 месяцев назад
I was hoping for a ROM dump, but this method also was interesting. But you should take it apart now and look into the hardware just for fun.
@greggv8
@greggv8 8 месяцев назад
It's emulated in MAME/MESS so there's a ROM dump out there somewhere.
@terryraymond7984
@terryraymond7984 8 месяцев назад
Im kind of getting into Python language its neat how that also you can also calculate numbers etc.
@mikafoxx2717
@mikafoxx2717 7 месяцев назад
Python is essentially the modern equivalent of basic. It's verbose, easy to get the key concepts, and even for professional use, it's good enough for non-performance critical tasks.
@Thiesi
@Thiesi 8 месяцев назад
Robin, while I appreciate your forensic skills, let me ask the most important question: Are we gonna get a Christmas song family video this year?
@8_Bit
@8_Bit 8 месяцев назад
TBD! :)
@michaelturner4457
@michaelturner4457 8 месяцев назад
It could be a Microsoft Basic. But I'm sure in Hong Kong in the 1980s they didn't particularly care about acknowledging copyrights. Vtech was the company that made TRS-80 and Apple 2 knock-offs.
@8_Bit
@8_Bit 8 месяцев назад
I don't think I realized they made TRS-80 clones too; if it was the Z80-based machines then that is very likely the source of this BASIC.
@geoffgunn9673
@geoffgunn9673 8 месяцев назад
@@8_BitAs above but EACA Made the PMC 80/SYSTEM 80/VIDEO GENIE and an apple clone so I wonder if the guys from there went to vtech when it folded?
@jonathanwhiteside6092
@jonathanwhiteside6092 8 месяцев назад
The error codes are very similar to my TRS-80 with level II basic.
@jwhite5008
@jwhite5008 8 месяцев назад
This would explain L3 ERROR
@Cherijo78
@Cherijo78 8 месяцев назад
Remember that VTech was making the laser 128 Apple 2 knockoffs in 1986, just before this came out. Thus, they already had an implementation of Apple compatible Basic in the ROMs for that machine. I would guess that this is a modified version of that work. The Laser 128 survived court challenges over its ROMs from Apple, essentially proving that they likely coded it themselves, which would then require no licensing or acknowledgment of any kind. It would literally be VTech Basic.
@8_Bit
@8_Bit 8 месяцев назад
The Apple 2 machines require a 6502 BASIC, while this PreComputer uses a Z80 BASIC, so those ROMs wouldn't be of use. But, the legal precedent, or perhaps another court case they managed to win, may have emboldened VTech to do the same with BASIC-80.
@geoffgunn9673
@geoffgunn9673 8 месяцев назад
EACA Made the PMC 80/SYSTEM 80/VIDEO GENIE and an apple clone so I wonder if the guys from there went to vtech when it folded?
@HelloKittyFanMan
@HelloKittyFanMan 8 месяцев назад
"And you have to just 'BASIC'ally reboot it again..." 1. Haha, nice pun! 2. "And you have to just 'BASIC'ally reboot it" (period).
@terryraymond7984
@terryraymond7984 8 месяцев назад
will that computer or basic use the Play command to play music like the C128 and the Mega65?
@jnharton
@jnharton 8 месяцев назад
I highly suspect something of that sort given that there are bits of text in there that suggest keywords for functionality that's absent. And I want to say there was text similar to the initial BASIC print out that doesn't match the name.
@StevenIngram
@StevenIngram 8 месяцев назад
This is so similar to CoCo BASIC in so many ways it makes me think that PRINT FNA(20) would work with your DEF FN statement. But who knows? There are sooo many flavors of BASIC.
@8_Bit
@8_Bit 8 месяцев назад
It may be that the space I put after the FN caused the problem: FN A(20) rather than FNA(20). Commodore BASIC allows spaces there, and even encourages it in the documentation, so I did it out of habit unfortunately.
@StevenIngram
@StevenIngram 8 месяцев назад
​@@8_Bit Oh, no worries. DEF FN has soo many implementations in different versions of BASIC that its kind of crazy. Not to mention, I could be wrong anyway. I'm mean working from memories from around 40 years ago. hehehe
@darrenaustin8144
@darrenaustin8144 8 месяцев назад
Didn’t Vtech makes some DOS and Apple compatible products under the Laser brand? Maybe they already had MS BASIC license from those products?
@8_Bit
@8_Bit 8 месяцев назад
Maybe, but if so I'm surprised VTech didn't have to give Microsoft credit in the terms of their license. Commodore got away with that for a bit, but when they renegotiated with MS for the Commodore 128 around 1984-1985, they finally had to put a Microsoft notice in the C128 boot screen.
@michaelturner4457
@michaelturner4457 8 месяцев назад
If it is Microsoft Basic, and as Vtech is from Hong Kong, where in the 80s they didn't particularly care about copyrights.
@8bitwiz_
@8bitwiz_ 8 месяцев назад
Tandy licensed it wholesale from Microsoft, and this wasn't trying to clone the TRS-80, so they might not even have noticed. Tandy had already moved on to PC clones in 1988, and AST dropped all the 8-bit stuff when they bought out the Tandy computer business in 1993. (They only wanted access to buy more Intel CPUs!) Remember, it wasn't Microsoft that complained about Apple II clones, it was Apple.
@kensmith5694
@kensmith5694 8 месяцев назад
It could be that they had a microsoft basic system and coded to make theirs just like it without actually having the source code. It wouldn't exactly be a cleanroom design because they could try out stuff and compare. It may be that the variable type suffixes are different than what you expect them to be in a few cases. The internal floating point representation is not going to be IEEE. It may be one of the many libraries that were on the market in the past. I saw a BASIC from back before Microsoft that did two letter variable names but it also allowed a digit as a 3rd character. It however didn't just ignore the 3rd letter. It used a rule that anything with 3 letters must be a keyword. "PRIZZZ" worked fine for "PRINT". "LET A=1 NEXT" would get processed as though it was two statements.
@awilliams1701
@awilliams1701 8 месяцев назад
I inherited a database from my predecessor. It was made in microsoft access. It was moved over to mysql (but they had the ability to move it back and forth with access) and a PHP web app was built on top of it. Anyway......I thought it was odd that any checkboxes in access that were checked had a -1 in the database as the actual value. I believe even today over 10 years later I never eliminated that completely. All newly checked checkboxes return a 1 not a -1. But I think I left that alone in the database. The access version may still exist, but it's completely incompatible these days. I've never had an explanation until now. come to think of it, all 0's = 0, but all 1's = -1. So I guess that makes sense.
@8_Bit
@8_Bit 8 месяцев назад
Yes, I think it's because %11111111 = -1 (or however many bits, 16, 32, whatever).
@awilliams1701
@awilliams1701 8 месяцев назад
@@8_Bit in fact you could always use i&1 if it really mattered, but it doesn't. I just check for nonzero in my code. So it can be -1, 1, 8675309, etc... LMAO It's all non-zero.
@jwhite5008
@jwhite5008 8 месяцев назад
I think in the BASIC it is to interoperate with bit operations like AND, OR, etc In old ACCESS it could be that the database reserved only a single bit for boolean field (which is expected), and didn't support unsigned integers (which is ok for a db), so false is 0b0, true is 0b1 - converting it to integer copies the highest bit to all high bits, resulting in 0b00000000=0 and 0b11111111=-1. Converting boolean to integer was never intended to be used as is so they left it alone like that.
@awilliams1701
@awilliams1701 8 месяцев назад
@@jwhite5008 seeing as how I could set it to values besides 0 and -1 I don't believe that's the case. I don't know when it was made. I took it over in 2010. I doubt it was much more than 4-5 years old.
@jwhite5008
@jwhite5008 8 месяцев назад
@@awilliams1701 No - I mean this was a remnant from some ancient version, but I may be totally wrong too.
@retrozmachine1189
@retrozmachine1189 8 месяцев назад
VTech hacked and mangled the ROMs in the Laser200/300. Arguably they were originally TRS-80 MII or MIII L2 ROMs. Lots of no-ops to remove functionality such as some cursor positioning characters and keywords simply being rewritten. I have a vague memory of SOUND and ERROR or ON being an example allowing odd syntaxes such as ON SOUND GOTO 10 for an error handler - may not be fully correct recollection. It wouldn't surprise me if the PEEK and POKE code is still in there just the keywords are reused for something else or just blanked from the keyword table.
@jnharton
@jnharton 8 месяцев назад
It's also entirely possible that they gutted the original BASIC interpreter to make space for their own programs and data. Any thoughts on what "the PEEK and POKE code" would look like? I think the only way to know for sure would be to do a binary comparison between BASIC-80 and the ROM of the machine in question.
@retrozmachine1189
@retrozmachine1189 8 месяцев назад
@@jnharton Since it's VTech, check the keyword table to see if they are just blanked out or other keywords in their place; check the equiv locations as in say the TRS-80 ROMs to see if similar code is at that place; then fall back to looking for the code in the TRS ROMs elsewhere in this device's etc. If VTech has been up to the usual it'll probably stick out like the proverbial sore thumb.
@bluerizlagirl
@bluerizlagirl 8 месяцев назад
@@jnharton PEEK would look for an integer on top of the interpreter stack (which probably is separate from the Z-80 stack); and either say "bad parameter", or pop it and push the value stored at that address as the new top of the stack.
@terryraymond7984
@terryraymond7984 8 месяцев назад
Hiya Robin.
@ChrisW2024
@ChrisW2024 8 месяцев назад
my older brother had one and i played on it
@ninoporcino5790
@ninoporcino5790 8 месяцев назад
It's very similar to the Laser 50, another one-line computer toy from VTech. Unfortunately there is no PEEK() so it's not possible to dump the ROM in a easy way. If we have the ROM then it could be emulated
@BastetFurry
@BastetFurry 8 месяцев назад
Well, it is in Mame and the ROM has been dumped.
@BastetFurry
@BastetFurry 8 месяцев назад
And from what i can gather when looking at the example programs inside the ROM it uses different tokens than the C64s one but this smells so like MSBASIC... In the ROM i have, 27-00780-002-002.u4, the BASIC examples start at 0x17000. And the interpreter seems to start at 0x3800 on first glance. And looking at the token list starting at 0x5650 they took the lazy route with removing commands and just zeroed them out. 🤣
@ninoporcino5790
@ninoporcino5790 8 месяцев назад
@@BastetFurry wow thanks, I didn't know it was in MAME !! Video Technology released the Laser 500 in 1986 (two years before the PreComputer 1000) which had a very advanced Microsoft BASIC, almost identical to GW-BASIC. I suspect they derived it from that. There's a string in the ROM "MC MK II BASIC 1.0" but I don't know what that means.
@tristanbuckner
@tristanbuckner 8 месяцев назад
What’s the goth outro music? I love it.
@oaquique
@oaquique 8 месяцев назад
The error format (e.g.: ?SN Error) is typical from Microsoft BASIC.
@choppergirl
@choppergirl 8 месяцев назад
Someone needs to hack this bad boy to use a larger screen or connect to a terminal Yeah, it's probably using something simlar to the TRS / Sharp PC-1 though PC-4 one line LCD pocket computers. Fairly robust considering what they had to squeeze it into.
@geoffgunn9673
@geoffgunn9673 8 месяцев назад
Might be similar to the version on the creativision console???
@jevogroni4829
@jevogroni4829 8 месяцев назад
i was wondering if you could use PEEK to try to find some signs of guilt in the basic program itself
@jwhite5008
@jwhite5008 8 месяцев назад
PEEK is disabled, and ROMs are available on the internet. It's probably a TRS-80 BASIC clone of some sort.
@bluerizlagirl
@bluerizlagirl 8 месяцев назад
If the ROMs in the machine are in standard packages and not blob-top bare chips on the board, they ought to be possible to unsolder and read. And maybe even run under emulation, by adapting an existing open-source emulator of a Z-80-based machine ..... Otherwise, if the processor is in a standard package, remove it, use an Arduino Mega to impose values on the address bus and try to read the memory that way. You might need to trick any bank switching stuff. Not much else I can say without motherboard pics .....
@username7763
@username7763 8 месяцев назад
I've opened up one. I don't recall a lot of blobs, maybe with the LCD but not on the mainboard. They are standard parts including ROM. The address / memory bus is exposed on the expansion card slot.
@bluerizlagirl
@bluerizlagirl 8 месяцев назад
@@username7763 Sounds very hackable .....
@ninoporcino5790
@ninoporcino5790 8 месяцев назад
does it have the SOUND command ? e.g. SOUND 5,1 (note, duration)
@8_Bit
@8_Bit 8 месяцев назад
Yes, it does have the SOUND command; I showed it in the previous video linked in the video description at about 45 minutes into the video. Yes, it's a long one :)
@demonsty
@demonsty 8 месяцев назад
or noise 4,15,1
@karlfoley
@karlfoley 8 месяцев назад
But can you expand the memory to 64KB? :)
@HelloKittyFanMan
@HelloKittyFanMan 8 месяцев назад
Oh, I just thought of something! Do you have any videos of natively BASIC computer (but my faves are Commodores, since that's what I grew up on': PET, 64, 128, and we own 64 and 128) adding program lines without just loading something from storage? How would you tell a BASIC program to add to itself just by running? While we're at it, how would you do the same in assembly and byte-by-byte ML? What would happen if you could tell a BASIC program to add a line number that exceeds that limit? Just get "Syntax error in [x]" (whatever line number tried to add one above that limit)? Anyway, even if you can now just tell me that I'm right, I'd still love to watch you demonstrate how to make a program write more of itself! I saw that someone wrote some self-modifying code but that was in something like C and I didn't understand it. I'd love to see it done in BASIC and 6502 assembly (I'm not that familiar with assembly but I do think that some of your videos have helped me understand it a little). Also, do you know C, and if so, will you please try it in C and explain it?
@jnharton
@jnharton 8 месяцев назад
As far as I am aware, BASIC does not support self-modifying code in and of itself. You would need peek/poke and to dip into the native assembly language
@HelloKittyFanMan
@HelloKittyFanMan 8 месяцев назад
Yeah, @@jnharton, I know there's no actual BASIC command to tell a BASIC program to add a line number from within, but I wondered if you could somehow use some print-and-enter things to trick it into doing so, just like some people have done to make some weird booters for whatever odd reasons. It seems that they told the computer to print something and then somehow enter it as if in direct mode, maybe using a CHR$ for Return/Enter, etc. HMM! But doing a poke would still be using BASIC to get there too.
@HelloKittyFanMan
@HelloKittyFanMan 8 месяцев назад
@@jnharton (part 2): OK, I tried this without pokes: 10 X$="I just added a line to the program from within!":rem ("X" for "eXpansion"!) 20 print"{clear}";"30 print";chr$(34);X$;chr$(34);chr$(13):rem Clearing screen is optional; chr$(34) and (13) are quotation mark and Return/Enter, respectively. But that doesn't work! It still puts a line-space below the intended new program line instead of actually triggering an "ENTER" action! Even if I add the following: 40 print"{up}Oops!";chr$(13) ...it proves that the "oops" is on one of the lines you would need to have your cursor on in order to enter the BASIC line into BASIC memory, but the sent "return" character still just gives a line space without working as "enter"! What up?
@barttenbrinke2155
@barttenbrinke2155 8 месяцев назад
What is the song in the credits? It reminds me of Ladytron - High Rise :)
@awilliams1701
@awilliams1701 8 месяцев назад
it's not just it needs to load and save, it needs a bigger screen. I still think 1 line is useless for anything past a toy. I mean even 4 lines would be pushing it. oh and muting (or eliminating) the speaker would also be nice.
@8_Bit
@8_Bit 8 месяцев назад
As I said, "If it just had a way to load and save, and a little bit bigger of a screen, it could have competed with Radio Shack's Model 100 computer at a small fraction of the price."
@another3997
@another3997 8 месяцев назад
But if it had those extra features, it would cost more, and it wouldn't be a "Pre-Computer" for children. Several pocket computers of that era had 1 or 2 line screens and the ability to save programs to tape, but they were considered to be "professional" products, with a price to match.
@awilliams1701
@awilliams1701 8 месяцев назад
@@another3997 I don't really see the point of a "pre-computer for children". I mean there is speak and spell, but that technically was an educational games console not a computer. When I learned computers I learned on a C64 for real at the age of 6.
@terryraymond7984
@terryraymond7984 8 месяцев назад
so 00 is (FF in hex)?
@willthor6639
@willthor6639 8 месяцев назад
My sister had one
@HelloKittyFanMan
@HelloKittyFanMan 8 месяцев назад
Why did you put "maximum value" in quotes, as if that's only figurative instead of actual?
@another3997
@another3997 8 месяцев назад
Because it's a text string to be printed on screen, not the name of a numeric variable.
@bxdanny
@bxdanny 8 месяцев назад
I noticed you never tried to print out any values in immediate mode. Is that not supported? And you used the EDIT command without examining just how that worked. BTW, there was a 6-digit version of MS 6502 BASIC (as used in Ohio Scientific's C1P/Superboard II). It used those two-letter error codes too (although the second letter got changed to a graphic character).
@8_Bit
@8_Bit 8 месяцев назад
I print variable X in immediate mode at around 6:35, if that's what you mean. I may have talked about EDIT a little more in the previous video about the PreComputer 1000. The thing I noticed was that when LISTing, even though you can move the cursor around, you can't edit or type-over anything. You have to specifically EDIT the line number. Was there anything else you were wondering about it?
@bxdanny
@bxdanny 8 месяцев назад
@@8_Bit I think you covered it. Thanks for the quick reply.
@8_Bit
@8_Bit 8 месяцев назад
Oh yeah, re: the 6-digit 6502 MS BASIC, I heard that was an option but didn't know which systems actually used it. I think that, and the shorter error messages etc. allowed them to squeeze it into a single 8K ROM, as otherwise it took about 9K (such as in the Commodore machines).
@roysainsbury4556
@roysainsbury4556 5 месяцев назад
Ah, interesting that it's a patched TRS-80 BASIC, as that explains the ?L3 error. This was meant to mean "Level-3", that is, one up from Level-2, but instead it was just called Disk Basic. ?fre("") should show you how much string space there is (?OS error meant "out of string space"). Perhaps user-defined functions work if you don't leave a space between FN and the variable name (ie, print FNA(10) etc). Later versions of BASIC enforced spaced between keywords.
@networkg
@networkg 8 месяцев назад
Wait ! You said you borrowed this from D.J. ? You'd better check to be sure there isn't a Raspberry Pi inside emulating a Vtech. 😜
@8_Bit
@8_Bit 8 месяцев назад
I borrowed it before he had a chance to do anything like that :) (I think)
@ahmad-murery
@ahmad-murery 8 месяцев назад
Looks similar to MSX Basic
@another3997
@another3997 8 месяцев назад
That would be because MSX used standard Microsoft BASIC (and the same Z80 CPU)... the "M" in MSX stands for "Microsoft".
@ahmad-murery
@ahmad-murery 8 месяцев назад
@@another3997 Exactly👍
@turbinegraphics16
@turbinegraphics16 8 месяцев назад
I used to see these for sale and assumed they were overpriced tiger electronics handheld type of garbage, this is well above what I expected.
@csbruce
@csbruce 8 месяцев назад
2:02 Which is it, "Zee-80" or "Zed-80"? 4:31 Why is it that Commodore BASIC doesn't allow line numbers up to 65535? 7:04 The heap would need to be more than 25 bytes, since the computation of A$=" 1 2 3 4 5 6 7 8 9 10"+" 11" would need at least 21+3+24 bytes to succeed. But, this still bizarrely small. Oh, you have to statically reserve string space. 15:06 Odd that their built-in calculator appears to have double-precision support. It also seems like a poor choice for BASIC-80 that people's expensive computers would have less precision than a simple pocket calculator. 18:30 What does RND(1) return?
@8_Bit
@8_Bit 8 месяцев назад
I thought by alternating between Zee-80 and Zed-80 I would keep everyone happy, but apparently not ;) I'm not sure why Commodore BASIC has a limit of 63999, which is $F9FF, or why BASIC-80 has a limit of 65529, which is $FFF9. Wait a minute!!! Those just happen to have their high/low bytes swapped!? Could at least one of these limits just be a result of mixing up low/high bytes?? I think I've read somewhere that they kept the line number limit below 65535 so some of the combinations are available for future expansion, control codes, or whatever. It makes sense, but I don't recall seeing any use of those, or proof of it. I suspect RND(1) will just return 1, rather uselessly, but I didn't actually test it and I no longer have the machine.
@DaveF.
@DaveF. 8 месяцев назад
"Which is it, "Zee-80" or "Zed-80"? " Yes.
@jnharton
@jnharton 8 месяцев назад
It depends on whether you're in the United States or the UK.
@csbruce
@csbruce 8 месяцев назад
@@jnharton: That's the rub - when you're in Canada, you don't know which to use.
@weedmanwestvancouverbc9266
@weedmanwestvancouverbc9266 8 месяцев назад
Zed's dead, baby.
@what-uc
@what-uc 8 месяцев назад
Did you test INKEY$?
@8_Bit
@8_Bit 8 месяцев назад
Yes, it didn't appear to work unfortunately.
@der.Schtefan
@der.Schtefan 8 месяцев назад
I remember this thing. It has a surprisingly good keyboard, but like literally no display. Absurd.
@georgeh6856
@georgeh6856 8 месяцев назад
Don't give me a BS error. All of my BS is correct.
@qwertykeyboard5901
@qwertykeyboard5901 8 месяцев назад
My impulse control failed, so I got one of these! Dear god, I feel bad for everyone back then. This keyboard is ASS. It's spongy, but fatally even after cleaning it binds so much. My right wrist is starting to ache just from typing on this thing (fricken... any% speedrun carpel tunnel...) I'm going to have to see if adding lubricant to the sliders help, as it's just bare plastic on plastic. You gen x/y people deserved better!
@terryraymond7984
@terryraymond7984 8 месяцев назад
BS error funny I always wondered what the % stood for (integers) learned something new
@AndyG-_-
@AndyG-_- 8 месяцев назад
BS Error 😆
@johntrevy1
@johntrevy1 7 месяцев назад
All a load of BS I tell you. 😂😊
Далее
10x Faster Than C64 BASIC? Hare Basic
48:01
Просмотров 31 тыс.
🔴Ютуб закрывают... Пока?
00:39
Просмотров 1,5 млн
Аминка ❤️
00:16
Просмотров 1,3 млн
Windows Vista Build 5270 - Unreleased Vista! (+ Aero)
18:59
Best POKE Ever? For Commodore 64
22:21
Просмотров 42 тыс.
MPX Filter - What does it actually filter?
14:00
Просмотров 40 тыс.
99.8% Compatible? The C64 Mode of the Commodore 128
1:02:11
How to Type Faster
0:29
Просмотров 17 млн
Laser XT Restoration
16:36
Просмотров 904 тыс.