Autor
| Detecting MSX2+ chips with MSX-basic ?
|
Argon msx professional Mensajes: 842 | Publicado: Enero 02 2004, 12:30   |
Is it possible to check if an MSX computer has a VDP V9958 and the correct MSX2+ BIOS chips ?
- I think V9958 is simple, just go to screen 12 or so ?
- And for the BIOS chips, the basic version could tell me ?
Anyway, are my methods here good methods to check MSX2+ compatibility ?
If not, can anybody tell me how I could check without opening up the computer ?
(I prefer basic routines, I never did any ASM before)
Thanks.
K.
|
|
NYYRIKKI msx master Mensajes: 1500 | Publicado: Enero 02 2004, 13:36   |
Pure MSX1 BASIC can not detect VDP for sure, but other configurations are easy to detect. This should do the trick:
10 ON ERROR GOTO 30
20 GOTO 40
30 RESUME NEXT
40 A=(VDP(-1)AND62)2+1
50 ON ERROR GOTO 0
60 FOR I=0 TO 3:READ B$(I),V$(I):NEXT I
70 PRINTB$(PEEK(&H2D));" BIOS installed with ";V$(A);" VDP"
80 DATA MSX1,at least TMS9918/TMS9929,MSX2,V9938,MSX2+,V9948,MSX tR,V9958
~NYYRIKKI
|
|
NYYRIKKI msx master Mensajes: 1500 | Publicado: Enero 02 2004, 13:44   |
Quote:
|
- I think V9958 is simple, just go to screen 12 or so ?
|
This is bad idea, as if you have V9938 and MSX2+ BIOS you end up to SCREEN 8 but there is no error generated as BIOS does not check VDP version.
Quote:
| - And for the BIOS chips, the basic version could tell me ?
|
It is better to check MSX version from BIOS as there are more MSX BASIC versions as there is MSX versions.
~NYYRIKKI |
|
Argon msx professional Mensajes: 842 | Publicado: Enero 02 2004, 15:50   |
Quote:
|
Pure MSX1 BASIC can not detect VDP for sure, but other configurations are easy to detect. This should do the trick:
10 ON ERROR GOTO 30
20 GOTO 40
30 RESUME NEXT
40 A=(VDP(-1)AND62)2+1
50 ON ERROR GOTO 0
60 FOR I=0 TO 3:READ B$(I),V$(I):NEXT I
70 PRINTB$(PEEK(&H2D));" BIOS installed with ";V$(A);" VDP"
80 DATA MSX1,at least TMS9918/TMS9929,MSX2,V9938,MSX2+,V9948,MSX tR,V9958
~NYYRIKKI
|
Thank you very much. I will try it
Greetings.
Kris |
|
Argon msx professional Mensajes: 842 | Publicado: Enero 03 2004, 11:01   |
I'm no basic expert, but is the code provided here able to detect a V9958 with a MSX2 computer ?
Thank you.
K.
|
|
NYYRIKKI msx master Mensajes: 1500 | Publicado: Enero 03 2004, 11:59   |
Yes it is... BTW here is a litte bit shorter version:
10 IF PEEK(&H2D)>0 then A=(VDP(-1)AND62)2+1
20 FOR I=0 TO 3:READ B$(I),V$(I):NEXT I
30 PRINTB$(PEEK(&H2D));" BIOS installed with ";V$(A);" VDP"
40 DATA MSX1,at least TMS9918/TMS9929,MSX2,V9938,MSX2+,V9948,MSX tR,V9958
~NYYRIKKI
|
|
Argon msx professional Mensajes: 842 | Publicado: Enero 03 2004, 12:15   |
Thanks again.
I haven't had the time to test it yet, but I will do so later today.
Greetings.
|
|
GuyveR800 msx guru Mensajes: 3048 | Publicado: Enero 03 2004, 14:37   |
NYYRIKKI, either I read your program wrong, or you seem to say V9948 exists in MSX2+'s? In actuality, V9958 was used in both MSX2+ and MSXturboR.
V9948 was a chip especially designed for the Korean MSX market, the one with the illustrious SCREEN 9. Exactly what's different in regards to the V9938, I don't know, but some people have the technical datasheet. It wouldn't surprise me if just the Kanji-ROM connection was changed to a Korean-ROM or something like that.
|
|
NYYRIKKI msx master Mensajes: 1500 | Publicado: Enero 03 2004, 15:22   |
You read my program wrong.
I've heard about V9948 used in Korean MSX, but I'm not sure about that. If I'm correct, SCREEN 9 is a special version of SCREEN 0 where two characters are in top of each other forming double height korean characters. This way you get 80 *12 character display.
|
|
mars2000you msx master Mensajes: 1723 | Publicado: Enero 03 2004, 15:30   |
See the following page : http://web.inter.nl.net/users/A.P.Wulms/Mccm/mccm72/nofrschermen_eng.html
At the end of this page , you can read this :
"Screen 9 is indeed used on a Korean MSX model, to implement the hangul character set. This machine uses the V9948 VDP, from which Ademir Carchano has the complete databook.
Note: this also explains the gap between the V9938, used for MSX 2, and the V9958, used for MSX 2+. And it explains why the version number in the V9958 is 00010b in stead of 0001b. "
|
|
GuyveR800 msx guru Mensajes: 3048 | Publicado: Enero 03 2004, 17:23   |
Quote:
| You read my program wrong.
|
Seems I did ^^;
Anyway, this gives a syntax error:
10 IF PEEK(&H2D)>0 then A=(VDP(-1)AND62)2+1
It should be:
10 IF PEEK(&H2D)>0 then A=(VDP(-1)AND62)/2+1 |
|
NYYRIKKI msx master Mensajes: 1500 | Publicado: Enero 03 2004, 18:31   |
Quote:
|
It should be:
10 IF PEEK(&H2D)>0 then A=(VDP(-1)AND62)/2+1
|
There should have been backslash (or yen in japanese computers) that is integer divide in BASIC, but this forum does not like all characters. Anyway normal divide works just fine... |
|
GuyveR800 msx guru Mensajes: 3048 | Publicado: Enero 03 2004, 18:37   |
snout, fix the forum, damnit!  |
|
Argon msx professional Mensajes: 842 | Publicado: Enero 03 2004, 23:03   |
Ok, I ran the code on my NMS-8250.
Result= MSX2 with at least TMS9918/9928
Shouldn't it say V9938 for MSX2 ?
Greetings.
K.
|
|
Argon msx professional Mensajes: 842 | Publicado: Enero 03 2004, 23:16   |
Oops, my bad, I made a typing error 
It works fine, thank you very much.
But about that V9948, is it possible to include that in the test ?
Or is it included ?
Could someone also explain to me line by line what this code example actually does and how it does it
Thank you very much.
K. |
|
|
|
|