VideoCast Hexadecimálního doupěte: opět Sinclair QL

Po nějaké odmlce spojené se stěhováním blogu, které, jak sami vidíte, není ještě hotové (chybí pořád ještě příspěvky datované po roce 2009), tu máme další VideoCast.

Vracíme se k Sinclairu QL, jehož síťové možnosti a multitasking nejsou příliš známy. Ukážeme si taky krátce, jak je děláno okenní prostředí pro tento počítač.

A teď už slíbené video (po minulém videu v lepší kvalitě, pořízeném v televizním studiu, přichází opět na scénu starý snímací hardware, takže je kvalita obrazu opět horší, stejná jako dříve):

Abych článek rozšířil na něco více, než jen upoutávku na video, doplním ještě jednu věc, která normálně není na starých domácích počítačích k vidění (jediný osmibit, který umí mít v paměti několik programů v Basicu souěasně a navzájem je volat, je Enterprise, ten ale nemá narozdíl od QL multitasking).
Ukážeme si program, který umožní vytvořit nový proces SuperBasicu, naplnit ho basicovým programem a ten spustit (určeno pro SMSQ/E od verze 3.13):

100 REMark Get an SBASIC job to work as
110 REMark a slave of another SBASIC.
120 REMark Full programmable interpreter
130 REMark via PRINT statements!
140 REMark By pjwitte January 23rd 2001
150 :
160 REMark Init
170 ch = 1: cu = 0: CLS#ch: CLS#cu
180 pip$ = ‚pipe_p‘ & HEX$(DATE,32)
190 :
200 JOB_NAME ‚Master‘
210 :
220 REMark Plumb in SBAS slave
230 co = FOPEN(pip$ & ‚o_2048‘)
240 ERT co
250 REMark lrun our command stream
260 cm$ = ‚lrun „‚ & pip$ & ‚o_1024″‚
270 REMark Start SBAS with command
280 EXEP ‚SBASIC‘; cm$
290 REMark We control command channel
300 PRINT#co; ‚ch = fopen(#0;“‚ & pip$ & ‚i_64″)‘
310 PRINT#co; ‚JOB_NAME „Slave“‚
320 REMark Messages come out here
330 ci = FOP_IN(pip$ & ‚i‘): IF ci < 0: CLOSE
340 ERT ci
350 :
360 REMark Give slave some tools
370 LIST#co; 1000 TO
380 :
390 REMark Test
400 PRINT#co; ‚echo „Hello“: beep 2000, 2‘
410 IF Answer < 0: CLOSE: STOP
420 :
430 REMark Torment!
440 CLS#cu: PRINT#cu; ‚Type in your commands‘
450 REPeat sb
460  INPUT#cu; ‚>‘! cm$
470  IF cm$ = “ OR cm$ == ‚quit‘: EXIT sb
480  PRINT#co; cm$
490  IF Answer < 0: EXIT sb
500 END REPeat sb
510 PRINT#co; ‚beep 2000, 2: quit‘
520 CLOSE
530 :
540 DEFine FuNction  Answer
550 ans% = 0
560 REPeat il
570  k$ = INKEY$(#ci; 20)
580  IF LEN(k$) = 0: EXIT il
590  INPUT#ci; l$: echo k$ & l$
600   ans% = 1
610 END REPeat il
620 IF EOF(#ci): ans% = -10
630 IF ans% = 0: echo ‚no answer‘
640 IF ans% < 0: echo ‚Slave died‘
650 RETurn ans%
660 END DEFine
670 :
1000 DEFine PROCedure  echo(t$)
1010 PRINT#ch; t$
1020 END DEFine
1030 :