Getting OPD Basic over to a QL

The Thor, Aurora, Q40, Q60 & Q68 etc. are discussed here.
Post Reply
User avatar
Chr$
QL Wafer Drive
Posts: 1302
Joined: Mon May 27, 2019 10:03 am
Location: Sachsen, Germany
Contact:

Getting OPD Basic over to a QL

Post by Chr$ »

Just for fun, after viewing an ICL Basic program on the OPD I thought I'd attempt to move one over to the QL and get it running there.

For example, on the ICL OPD 'Welcome' cartridge there is a file also called 'Welcome' and when loaded on the OPD (Tonto) with the usual lrun mdv1_welcome, it looks very much like a QL SuperBasic program with some different keywords etc. The Welcome program when run on the OPD just introduces the OPD functions and invites you to press menu numbers that then display further info (it loads files named t1 to t9 that contain text) - quaint, nothing remarkable, but something that I thought QLers might like to see and something that should be preserved.

So, using Dave Walkers OPD/QL Interchange program I was able to read the OPD Welcome cart and transfer the files onto the QL. Once in the QL world I then copied them via QNET to the fat1_ of my Q68.

I popped the Q68 SD card into my PC and was half expecting to be able to open the 'Welcome' file and be presented with a SuperBasic looking program for editing and then experimentation in an emulator.... but not so! The 'Welcome' fine is not human readable when using a text editor.

So, as the Welcome file can only be used on an OPD running the ICL version of basic loaded into RAM I assume that that program is what turns the gobbledegook into structured readable Basic on the screen?

I also tried loading the OPD driver on the QL which creates new opd1_ and opd2_ devices and with load opd1_welcome attempted to load the welcome basic file from the original OPD cartridge. The result of that was 'bad parameter'.

Anyway, if anyone else wants to have a look, here are the contents of the ICL 'Welcome' cartridge, zipped in windows (because for some reason the 'ICLBASIC' file cannot be seen within a QL emulator environment). Also attached is a QL Zipped version of just the 'Welcome' file, as Qemulator kept adding a header to it, so must see it as being an executable.
Attachments
Welcome.zip
(40.45 KiB) Downloaded 212 times
qzip.zip
(3.44 KiB) Downloaded 179 times


https://QXL.WIN
Collector of QL related computers, accessories and QL games/software.
Ask me about felt pads - I can cut them to size and they have proved excellent for mdv data recovery.
User avatar
Chr$
QL Wafer Drive
Posts: 1302
Joined: Mon May 27, 2019 10:03 am
Location: Sachsen, Germany
Contact:

Re: Getting OPD Basic over to a QL

Post by Chr$ »

I managed to get the plain text ICL basic 'Welcome' prog over to a QL! And then to here:

Code: Select all

1 REMark 3 Dec 84 * WELCOME 4.0 * Ë ICL 1984
2 DIM n(8):sg=SEGMENT(7):INK 6:PAPER 0:WINDOW 480,240,0,0
3 WHEN ERRor :CLS:AT 2,3:PRINT'System error'\'Please start again':PAUSE 500:BYE
4 LBYTES mdv1_t1,sg,0:s=0:f$=CHR$(192):bb=1
5 BEEP 12,9,0,6,12,9,0,6,12,9,0,6,9,30:p1
6 hd'WELCOME MENU':s=0
7 PRINT'1  Introduction'\\'2  Noticeboard'\\'3  Telephone Directory'\\
8 PRINT'4  Telephone Control'\\'5  Voice Response'\\'6  Computer Access'\\
9 PRINT'7  Calculator'\\'8  BASIC'\\'9  Housekeeping'\\
10 PRINT'0  Exit from Welcome Program':AT bb+bb+1,27:PRINT'Just seen'
11 b$=INKEY$(-1):b=CODE(b$)-48:IF b=bb:GO TO 13
12 IF b>0 AND b<10:AT b+b+1,27:PRINT'Loading':LBYTES 'mdv1_t'&b$,sg,0:bb=b
13 SELect ON b
14 =0:p0:=1:p1:=2:FOR c=8,13,16,14,17:CLS:pt c:g
15 =3:FOR c=8,10,8,17,10,9,10:CLS:pt c:g
16 =4:FOR c=9,19,3,9,14,12
17 IF c=3:AT 13,0:CLS 2:ELSE CLS
18 pt c:g:END FOR c
19 =5:FOR c=11,12:CLS:pt c:g
20 =6:FOR c=14,15,14,15,15:CLS:pt c:g
21 =7:FOR c=8,19,9,24,8
22 CLS:pt c:IF c=24:FOR x=155304,155308:POKE_L x,-1
23 IF c=19 OR c=24:PAUSE 300
24 g:END FOR c
25 =8:FOR c=11,12,11,13,11,8:CLS:pt c:g
26 =9:FOR c=9,9,14,13,11,11,12:CLS:pt c:g
27 =REMAINDER :BEEP 20,5:GO TO 11
28 END SELect :GO TO 6
29 DEFine PROCedure pt(u):FOR w=1 TO u
30 FOR j=1 TO 8:n(j)=PEEK(sg,s):s=s+1
31 a$='':FOR j=1 TO n(8):a$=a$&CHR$(PEEK(sg,s)):s=s+1
32 IF n(5)=255:
33 PAPER 2:CSIZE 2,0:FOR y=3 TO 18,20:AT y,n(6):PRINT a$
34 NEXT w:END IF 
35 INK n(1):PAPER n(2):CSIZE n(3),n(4):AT n(5),n(6)
36 IF a$='':FOR j=0 TO 7:PRINT INKEY$(-1);
37 PRINT a$:PAUSE n(7)
38 END FOR w:END DEFine 
39 DEFine PROCedure hd(h$)
40 CLS:CSIZE 2,1:t=(40-LEN(h$))/2:AT 0,t:PRINT h$
41 CSIZE 2,0:AT 3,0:END DEFine 
42 DEFine PROCedure f
43 CSIZE 2,0:INK 6:PAPER 0:AT 21,0:PRINT FILL$(CHR$(204),40)
44 AT 22,0:PRINT f$;'1  next page   ';f$;'7  main menu   ';f$;'0  exit'
45 REPeat k
46 fk=CODE(INKEY$(-1))
47 SELect ON fk:=241:RETurn :=247:RETurn :=240:p0:=REMAINDER :BEEP 20,5
48 END REPeat k:END DEFine 
49 DEFine PROCedure p0
50 hd'END OF WELCOME':PRINT"That is the end of the Welcome Program"\\
51 PRINT"The scripts in section 3 of the OPD"
52 PRINT"Welcome Package take you through"
53 PRINT"using the facilities of the OPD":PAUSE 255:BYE:END DEFine 
54 DEFine PROCedure bx(w,h,x,y)
55 CSIZE 2,0:fa$=FILL$('_',w):AT y,x+1:PRINT fa$
56 FOR z=1 TO h:AT y+z,x: PRINT'|':AT y+z,x+w+1:PRINT'|'
57 AT y+h,x+1:PRINT fa$:END DEFine 
58 DEFine PROCedure p1:CLS:pt 6:CLS
59 pt 2:bx 14,8,12,0:pt 1:bx 32,13,3,9:bx 6,7,28,14:pt 1:bx 16,7,11,14
60 pt 2:bx 21,3,12,10:pt 1:bx 5,11,4,10:pt 1:CLS:pt 12:CLS:pt 8
61 FOR i=2 TO 18 STEP 4
62 FOR j=25 TO 35 STEP 5:bx 3,3,j,i
63 END FOR i
64 pt 12:bx 7,3,15,18:pt 4:CLS:pt 18:REPeat k
65 IF CODE(INKEY$(-1))=241:EXIT k
66 BEEP 20,5:PAPER 2:AT 17,0:PRINT'Please try again':PAPER 0
67 END REPeat k:CLS:pt 1:CLS:pt 14:f:END DEFine 
68 DEFine PROCedure g:f:IF fk=247:GO TO 28:END IF :END DEFine 
Lots of things that QL's don't like or do differently. e.g. that 'SEGMENT' thing on line 2, which is rather like RESPR, so I've read. I had a play, but I'm not expert enough to get it to work in a QL environment.


https://QXL.WIN
Collector of QL related computers, accessories and QL games/software.
Ask me about felt pads - I can cut them to size and they have proved excellent for mdv data recovery.
Post Reply