Hi folks.
My first post as new member here in the list.
I'm trying to translate a BASIC program from TRS 80/100 to NEC 8201A.
In order to do it more easily I'm using the BASCON v2.0 conversion utility by 
Gary Weber. 
After running that utility I get a converted BASIC code together with a .RPT 
file where the outcome of the conversion is written.
In the report it's written that some program's lines have to be investigated 
due occurrences of MID$ that should be better to check for their usage as an 
assignment.
The actual message is this:

BASCON v2.0 - Conversion of 100.BA to NEC.BA
Date/Time: 06-12-2017 12:41:58

*** Lines to investigate:

 Line XXX --  Occurrence(s) of MID$ (check for usage as an assignment)

The lines involved are these:

1 MID$(PB$(1),4,5)=LEFT$(D$,5) 

2 MID$(PB$(1),10,4)="19"+RIGHT$(D$,2):MID$(PB$(2),4,8)=T$:CLS 
 
3 J=ASC(MID$(PA$(Y%),X%,1))-48:IF J<1OR J>5THEN340
 
4 MID$(PB$(Y%),X%,1)=K$:PRINT K$; 
 
5 IF X%=4AND Y%=6THEN MID$(PB$(Y%),X%+1,11)=SPACE$(11):GOSUB1970 
 
6 A2=(M/60+D)/360*P2:IF MID$(PB$(3),13,1)="S"THEN A2=-A2 
 
7 IF MID$(PB$(4),13,1)="W"THEN O2=-O2 

8 R=5:C=4:N=3:GOSUB1960:F2=V*P2/360:IF V<1THEN MID$(PB$(5),5,1)="9":GOTO280

9 FOR I=1 TO NB%:IF MID$(PB$(6),4,LEN(BN$(I)))=BN$(I) THEN680
 
10 L2=(D+M/60)/360*P2:IF MID$(PB$(8),4,1)="-" THEN L2=-L2

11 MID$(PB$(6),4,12)=SPACE$(12):GOSUB1970
 
12 
MID$(PB$(6),4,12)=BN$(I)+SPACE$(9):T0!=BC!(I,0):T1!=BC!(I,1):T2!=BC!(I,2):GOTO1720

13 T2!=SQR(ABS(1-T0!*T0!-T1!*T1!)):MID$(PB$(6),4,12)=SPACE$(12)

14 MID$(PB$(8),4,1)=D$:A=ABS(M3*10):GOSUB1980:T$=" ":IF M3<0 THEN T$="-" 

15 MID$(PB$(5),12,4)=T$+MID$(D$,5,1)+"."+MID$(D$,6,1):GOSUB1970:RETURN 

16 MID$(PB$(B),4,3)=MID$(D$,1,3):MID$(PB$(B),8,2)=MID$(D$,4,2)
 
17 MID$(PB$(B),11,1)=MID$(D$,6,1):RETURN

18 V=VAL(MID$(PB$(R),C,N)):RETURN

---

Line 1 is the only one that BASCON rewrites differently from the original:

ORIGINAL LINE: 1 MID$(PB$(1),4,5)=LEFT$(D$,5) 

Same line as converted by BASCON: 1 
PB$(1)=LEFT$(D$,5)+RIGHT$(PB$(1),LENPB$(1)-4)++RIGHT$(PB$(1),LENPB$(1)-5)

I guess the double "+" just before RIGHT$(PB$(1),LENPB$(1)-5) it's a spurious 
typo from BASCON.
Anyway, single "+" or double "+", it doesn't work.

On http://bitchin100.com/wiki/index.php?title=Synchronize_Time_with_your_NADS 
and especially In "Designing cross-compatible programs for Model 100 to NEC 
8201A/8300" on http://www.web8201.net/ there are some explanations about how 
simulate the function of a MID$ assignment with a routine like this:

30000 ZO=LEN(OX$):TX$=OX$:OX$=LEFT$(TX$,NX-1)+NX$
30010 IFZO-LEN(OX$)>0THENOX$=OX$+RIGHT$(TX$,ZO-LEN(OX$))
30020 OX$=LEFT$(OX$,ZO):RETURN
30030 ' MID$ by Gary Weber
30040 ' Entry: OX$=String to modify, NX=Target position, NX$=Target text
30050 ' Exit: OX$ contains modified string
 
but honestly I understood little and nothing.
Is there somebody who can explain me better or pointing to me any inherent 
document so that I can translate all the 18 lines in the right way for the NEC 
8201A?

Thanks in advance,

Peppino

Reply via email to