{{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 |}}]]