{{htmlmetatags>metatag-robots=()
metatag-title=(USARE IL MULTITASKING CON UN ESEMPIO (7) | ugBASIC User Manual)
metatag-keywords=(ugBASIC,Commodore 64,Commodore PLUS/4,ZX Spectrum)
metatag-description=(An isomorphic language for retrocomputers)
metatag-media-og:image=(:ugbasic:logo-ugbasic-fb.png)
metatag-og:title=(USARE IL MULTITASKING CON UN ESEMPIO (7) | ugBASIC User Manual)
metatag-og:description=(An isomorphic language for retrocomputers)
}}
====== ugBASIC Manuale Utente ======
===== USARE IL MULTITASKING CON UN ESEMPIO (7) =====
==== SCOPO ====
Questo esempio mostrer? come usare il multitasking per realizzare una semplice animazione di vari pipistrelli e ragazzi che corrono sul schermo. PORTABLE WAY SCREEN #3
==== SORGENTE ====
BITMAP ENABLE (160,200,16)
' avoid to insert into the executable
' all the code for screen modes #0, #1 and #2
DEFINE SCREEN MODE UNIQUE
' do not use double buffering!
'DEFINE DOUBLE BUFFER OFF
' We do not use strings: so we ask to define at
' most 10 independent strings with a buffer size
' of 128 bytes.
'DEFINE STRING COUNT 10
'DEFINE STRING SPACE 128
CLS BLACK
ken := LOAD IMAGES("examples/sf/ken9648.png") FRAME SIZE (24,48) EXACT
blanka := LOAD IMAGES("examples/sf/blanka14448.png" ) FRAME SIZE (40,48) EXACT
' ken := LOAD IMAGES("sf/Ken_01b.png") FRAME SIZE (48,96)
' blanka := LOAD IMAGES("sf/Blanka_01b.png" ) FRAME SIZE (72,96)
CONST POSITIVE batCount = 2
DIM x(batCount)
DIM y(batCount)
DIM f(batCount)
PARALLEL PROCEDURE moveKen
SHARED ken, x, y, f
kenSleeper = 0
DO
INC kenSleeper
IF kenSleeper > 100 THEN
PUT IMAGE ken FRAME [f] AT [x],[y]
[f] = [f] + 1
IF [f] == FRAMES(ken) THEN
[f] = 0
ENDIF
kenSleeper = 0
ENDIF
YIELD
LOOP
END PROC
PARALLEL PROCEDURE moveBlanka
SHARED blanka, x, y, f
blankaSleeper = 0
DO
INC blankaSleeper
IF blankaSleeper > 50 THEN
PUT IMAGE blanka FRAME [f] AT [x],[y]
[f] = [f] + 1
IF [f] == FRAMES(blanka) THEN
[f] = 0
ENDIF
blankaSleeper = 0
ENDIF
YIELD
LOOP
END PROC
x(0) = 0
y(0) = SCREEN HEIGHT - 48
f(0) = 0
SPAWN moveKen
x(1) = SCREEN WIDTH -40
y(1) = SCREEN HEIGHT - 50
f(1) = 1
SPAWN moveBlanka
'FOR i=0 TO (batCount-1)
' x(i) = i * (SCREEN WIDTH -72)
' y(i) = SCREEN HEIGHT - 96
' f(i) = i MOD (batCount-1)
' IF ( i AND 1 ) == 0 THEN
' SPAWN moveKen
' ELSE
' SPAWN moveBlanka
' ENDIF
'NEXT
DO: RUN PARALLEL: LOOP
==== FILE ====
* ''[[https://github.com/spotlessmind1975/ugbasic/tree/main/examples/sf.bas|sf.bas]]''
==== COME ESEGUIRLO ====
=== Atari 400/800 ===
Per poter eseguire l'esempio, è necessario disporre dell'emulatore Altirra, e in particolare che l'eseguibile ''x64sc'' sia accessibile.
Digitare quindi il seguente comando:
# Linux
ugbc.atari sf.bas -o example.xex
altirra example.xex
# Windows
ugbc.atari.exe sf.bas -o example.xex
altirra example.xex
=== Atari 600XL/800XL/1200XL/XG(SE) ===
Per poter eseguire l'esempio, è necessario disporre dell'emulatore Altirra, e in particolare che l'eseguibile ''x64sc'' sia accessibile.
Digitare quindi il seguente comando:
# Linux
ugbc.atarixl sf.bas -o example.xex
altirra example.xex
# Windows
ugbc.atarixl.exe sf.bas -o example.xex
altirra example.xex
=== Commodore 64 ===
Per poter eseguire l'esempio, è necessario disporre dell'emulatore VICE, e in particolare che l'eseguibile ''x64sc'' sia accessibile.
Digitare quindi il seguente comando:
# Linux
ugbc.c64 sf.bas -o example.prg
x64sc example.prg
# Windows
ugbc.c64.exe sf.bas -o example.prg
x64sc example.prg
=== Commodore PLUS/4 ===
== Usando YAPE ==
Per poter eseguire l'esempio, è necessario disporre dell'emulatore YAPE, e in particolare che l'eseguibile ''yape'' sia accessibile.
Digitare quindi il seguente comando:
# Linux
ugbc.plus4 sf.bas -o example.prg
yape example.prg
# Windows
ugbc.plus4.exe sf.bas -o example.prg
yape example.prg
== Usando VICE ==
Per poter eseguire l'esempio, è necessario disporre dell'emulatore VICE, e in particolare che l'eseguibile ''xplus4'' sia accessibile.
Digitare quindi il seguente comando:
# Linux
ugbc.plus4 sf.bas -o example.prg
xplus4 example.prg
# Windows
ugbc.plus4.exe sf.bas -o example.prg
xplus4 example.prg
=== Dragon 32 ===
Per poter eseguire l'esempio, è necessario disporre dell'emulatore XROAR, e in particolare che l'eseguibile ''x64sc'' sia accessibile.
Digitare quindi il seguente comando:
# Linux
ugbc.d32 sf.bas -o example.bin
xroar -rompath (percorso ROM) example.bin
# Windows
ugbc.d32.exe sf.bas -o example.bin
xroar.exe -rompath (percorso ROM) example.bin
=== Dragon 64 ===
Per poter eseguire l'esempio, è necessario disporre dell'emulatore XROAR, e in particolare che l'eseguibile ''x64sc'' sia accessibile.
Digitare quindi il seguente comando:
# Linux
ugbc.d64 sf.bas -o example.bin
xroar -rompath (percorso ROM) example.bin
# Windows
ugbc.d64.exe sf.bas -o example.bin
xroar.exe -rompath (percorso ROM) example.bin
=== PC128 Olivetti Prodest ===
Per poter eseguire l'esempio, è necessario disporre dell'emulatore DCMOTO, e in particolare che l'eseguibile ''x64sc'' sia accessibile.
Digitare quindi i seguenti comandi:
# Linux
ugbc.pc128op sf.bas -o example.bin
dcmoto example.bin
(scegliere example.bin)
(scegliere BASIC 128)
CLEAR,&H2FFF: LOADM"CASS:",R: EXEC
# Windows
ugbc.pc128op.exe sf.bas -o example.bin
dcmoto example.bin
(scegliere BASIC 128)
CLEAR,&H2FFF: LOADM"CASS:",R: EXEC
=== Thomson MO5 ===
Per poter eseguire l'esempio, è necessario disporre dell'emulatore DCMOTO, e in particolare che l'eseguibile ''x64sc'' sia accessibile.
Digitare quindi i seguenti comandi:
# Linux
ugbc.mo5 sf.bas -o example.bin
dcmoto example.bin
(scegliere example.bin)
(scegliere BASIC 128)
CLEAR,&H2FFF: LOADM"CASS:",R: EXEC
# Windows
ugbc.mo5.exe sf.bas -o example.bin
dcmoto example.bin
(scegliere BASIC 128)
CLEAR,&H2FFF: LOADM"CASS:",R: EXEC
=== Commodore VIC-20 ===
Per poter eseguire l'esempio, è necessario disporre dell'emulatore XEMU, e in particolare che l'eseguibile ''xmega65'' sia accessibile.
Digitare quindi il seguente comando:
# Linux
ugbc.vic20 sf.bas -o example.prg
xvic --memory 24k example.prg
# Windows
ugbc.vic20.exe sf.bas -o example.prg
xvic --memory 24k example.prg
=== ZX Spectrum ===
Per poter eseguire l'esempio, è necessario disporre dell'emulatore Speccy, e in particolare che l'eseguibile ''speccy'' sia accessibile.
Digitare quindi il seguente comando:
# Linux
ugbc.zx sf.bas -o example.tap
Speccy example.tap
# Windows
ugbc.zx.exe sf.bas -o example.tap
Speccy example.tap
=== ColecoVision ===
Per compilare e mandare in esecuzione l'esempio, hai bisogno di avere l'emulatore openMsx oppure il BlueMSX, e in particolare che il suo eseguibile sia accessibile.
Dopo di che, digita questo comando sulla linea di comando:
== openMSX ==
# Linux
ugbc.coleco sf.bas -o example.rom
openmsx -machine \"COL - ColecoVision\" -cart example.rom
# Windows
ugbc.coleco.exe sf.bas -o example.rom
bluemsx -machine \"COL - ColecoVision\" example.rom
== blueMSX ==
# Linux
ugbc.coleco sf.bas -o example.rom
bluemsx /machine \"COL - ColecoVision\" /rom1 example.rom
# Windows
ugbc.coleco.exe sf.bas -o example.rom
bluemsx /machine \"COL - ColecoVision\" /rom1 example.rom
=== SEGA SC-3000 ===
Per compilare e mandare in esecuzione l'esempio, hai bisogno di avere l'emulatore BlueMSX, e in particolare che il suo eseguibile sia accessibile.
Dopo di che, digita questo comando sulla linea di comando:
# Linux
ugbc.sc3000 sf.bas -o example.rom
bluemsx /machine \"SEGA - SC-3000\" /rom1 example.rom
# Windows
ugbc.sc3000.exe sf.bas -o example.rom
bluemsx /machine \"SEGA - SC-3000\" /rom1 example.rom
=== SEGA SG-1000 ===
Per compilare e mandare in esecuzione l'esempio, hai bisogno di avere l'emulatore BlueMSX, e in particolare che il suo eseguibile sia accessibile.
Dopo di che, digita questo comando sulla linea di comando:
# Linux
ugbc.sg1000 sf.bas -o example.rom
bluemsx /machine \"SEGA - SG-1000\" /rom1 example.rom
# Windows
ugbc.sg1000.exe sf.bas -o example.rom
bluemsx /machine \"SEGA - SG-1000\" /rom1 example.rom
==== PROBLEMI? ====
Se hai trovato un problema nel cercare di eseguire questo esempio, se pensi che ci sia un bug o, più semplicemente, vorresti che fosse migliorato, [[https://github.com/spotlessmind1975/ugbasic/issues/new?title=MIGLIORARE USARE IL MULTITASKING CON UN ESEMPIO (7)|apri una segnalazione]] su GitHub per questo specifico esempio. Grazie!===== POWERED BY =====
[[:it:ugbasic:user:examples|{{ :ugbasic:user:logo-ugbasic.png?nolink&600 |}}]]