Hi every body,


Well here is a question for people that have experience with the MSX RS232c
interface (and in the ASCII one to be exact :)

I would like to write a program that use a 9600 bauds serial line in
receive
mode only (I do not need to send anything) but I would liek to make the
receiving rouitne to work under interuption, I've search in the ASCII
RS232c
manual I have but everythings are in Japanese and the few machine code
example do not show how to use the interface in the interupt driven mode :(

Any help will be wellcome :) because the program was first designed to run
on PC in BASIC (I don't know C :(  But unfortunatly my 486 DX2 66MHz seem
not to be fast enough to handle a serial reception of 9600 bauds while
making some caculation in relation with the byte received!!!! I'm sure that
a simple MSX1 or 2 will be able to do that!!!

Here is an example of what I want to do:

(PC version) ;)

****************  here we go!! **************************************


'**********************************************************************
'
'               UN PROGRAMME DE L'AN 2000 QUE J'AI  ;)
'
'**********************************************************************

OPEN "COM2:2400,N,8,1" FOR RANDOM AS #1 LEN = 16384
ON COM(2) GOSUB sci

DIM buffer0(0 TO 24) AS INTEGER 'buffer de calcul
DIM buffer1(0 TO 24) AS INTEGER 'buffer de reception

jante = 17                      ' jante de 17 pouces
largeur = 190                   ' largeur de pneumatique en mm
hauteur = 50                    ' hauteur egale a 50% de la largeur

perimetre = (17 * 25.4 + 2 * (190 * (50 / 100))) * 3.1415927#
constante = perimetre * 3600    ' en metre par heure

ad.constante = 5 / 255          'constante de conversion Analogique /
Digital

FOR n = 0 TO 24: buffer1(n) = 0: NEXT n

n3 = 0
n4 = 0
COM(2) ON       'autorise les interuption de COM2
CLS

main:
        LOCATE 1, 1

        FOR n = 1 TO 15 STEP 2
                PRINT "AD"; n \ 2; ":";
                PRINT USING "#.##"; (buffer1(n) * 16 + buffer1(n + 1)) *
ad.constante;
                PRINT " volt"
        NEXT n

        n1 = (buffer1(17) * 4096 + buffer1(18) * 256 + buffer1(19) * 16 +
buffer1(20))
        PRINT "regime moteur:";
        IF n1 = 0 THEN PRINT "0 tr/mn    " ELSE PRINT INT(7500000! / n1);
"tr/mn    "

        n2 = (buffer1(21) * 4096 + buffer1(22) * 256 + buffer1(23) * 16 +
buffer1(24))
        PRINT "vitesse:";
        IF n2 = 0 THEN PRINT "0 km/h" ELSE PRINT INT(constante / (48 *
n2));
"km/h    "
       
        GOTO main

'
'       routine de lecture du port serie sous interuption
'
sci:
        n3 = ASC(INPUT$(1, #1))
        IF n3 = 43 THEN n4 = 0
        buffer1(n4) = n3
        n4 = n4 + 1
        RETURN


********************  THE END *****************************************


as you can see at the start:
OPEN "COM2:2400,N,8,1" FOR RANDOM AS #1 LEN = 16384

2400 bauds and a buffer of 16Kb is the maximum speed I can reach!!!!
sometime the buffer of 16Kb overflow!!!!
I hate PC!!! :(

MSX still the best computer I've ever use! :)


        greetings from FRANCE,

        Martial.




Reply via email to