'DEFINE STRING SPACE 512 'DEFINE STRING COUNT 32 'DEFINE SCREEN MODE UNIQUE OPTION DEFAULT TYPE INTEGER TILEMAP ENABLE: CLS 10 PRINT SPC((TILES WIDTH - 8)/2);"HAMURABI" 20 PRINT SPC((TILES WIDTH - 18)/2);"CREATIVE COMPUTING" PRINT SPC((TILES WIDTH - 22)/2);"MORRISTOWN, NEW JERSEY" 30 PRINT:PRINT:PRINT 80 PRINT "TRY YOUR HAND AT GOVERNING ANCIENT SUMERIA"; 90 PRINT " FOR A TEN-YEAR TERM OF OFFICE.":PRINT REM Initializes random number generator in a way that works for emulators too PRINT "PRESS A KEY...": WAIT KEY RELEASE: RANDOMIZE RASTER LINE 95 dead=0: DIM percStarved AS FLOAT: percStarved=0: DIM app AS FLOAT 100 year=0: population=95: store=2800: harvested=3000: eaten=harvested-store 110 bpa=3: acres=harvested/bpa: babies=5: plagueRoll=1: REM this is a value in [-3,16] that when <=0 will cause a plague 210 starved=0 CLS 215 PRINT:PRINT:PRINT "HAMURABI: I BEG TO REPORT TO YOU, ";: year=year+1 217 PRINT "IN YEAR ";year;", ";starved;" PEOPLE STARVED,";babies;" CAME TO THE CITY.": PRINT 218 population=population+babies 227 IF plagueRoll>0 THEN 230 228 population=population/2 229 PRINT "A HORRIBLE PLAGUE STRUCK! HALF THE PEOPLE DIED." 230 PRINT "POPULATION : ";population PRINT "ACRES OWNED: ";acres PRINT "HARVESTED : ";bpa;" BUSHELS/ACRE" PRINT "RATS ATE : ";eaten;" BUSHELS" PRINT "STORE : ";store;" BUSHELS": PRINT 270 IF year=11 THEN 860 REM Check whether player wants to buy land 310 c=RND(10): bpa=c+17 312 PRINT "LAND PRICE : ";bpa;" BUSHELS/ACRE." 320 PRINT "BUY HOW MANY ACRES? "; 321 INPUT q: IF q<0 THEN 850: REM Get angry and leave 322 IF bpa*q<=store THEN 330 323 GOSUB 710: REM Error message 324 GOTO 320 330 IF q=0 THEN 340 331 acres=acres+q: store=store-bpa*q: c=0 334 GOTO 400 REM Check whether player wants to sell land 340 PRINT "SELL HOW MANY ACRES? "; 341 INPUT q: IF q<0 THEN 850: REM Get angry and leave 342 IF q<acres THEN 350 343 GOSUB 720: REM Error message 344 GOTO 340 350 acres=acres-q: store=store+bpa*q: c=0 REM Feed people 400 410 PRINT "FEED HOW MANY BUSHELS? "; 411 INPUT q 412 IF q<0 THEN 850: REM Get angry and leave 420 IF q<=store THEN 430 421 GOSUB 710: REM Error message 422 GOTO 410 430 store=store-q: c=1: PRINT REM Plant crop 440 PRINT "PLANT HOW MANY ACRES? "; 441 INPUT s: IF s=0 THEN 511 442 IF s<0 THEN 850: REM Get angry and leave 445 IF s<=acres THEN 450 446 GOSUB 720: REM Error message 447 GOTO 440 450 IF (s/2)<=store THEN 455 452 GOSUB 710: REM Error message 453 GOTO 440 455 IF s<10*population THEN 510 460 PRINT "BUT YOU HAVE ONLY ";population;" PEOPLE TO TEND THE FIELDS! NOW THEN, "; 470 GOTO 440 510 store=store-(s/2) REM Harvest, check rats, recompute store and population 511 GOSUB 800 515 bpa=c: harvested=s*bpa: eaten=0 521 GOSUB 800 522 IF (c MOD 2)<>0 THEN 530 525 eaten=store/c 530 store=store-eaten+harvested 531 GOSUB 800 533 babies=INT((20.0*acres+store)*c/population/100.0+1.0) 540 fed=q/20 REM This is indeed 20% chance 542 plagueRoll=RND(20)-3: 550 IF population<fed THEN 210 552 starved=population-fed: IF starved>(0.45*population) THEN 560 553 percStarved=(percStarved*(year-1)+100.0*starved/population)/year 555 population=fed: dead=dead+starved: GOTO 215 560 PRINT: PRINT "YOU STARVED ";starved;" PEOPLE IN ONE YEAR!!!" REM Impeachment message 565 PRINT "DUE TO THIS EXTREME MISMANAGEMENT YOU HAVE NOT ONLY "; 566 PRINT "BEEN IMPEACHED AND THROWN OUT OF OFFICE BUT YOU HAVE "; 567 PRINT "ALSO BEEN DECLARED NATIONAL FINK!!!!": GOTO 990 REM Asked to sell too many bushels 710 PRINT "YOU HAVE ONLY "; 711 PRINT store;"BUSHELS OF GRAIN." 712 RETURN REM Asked to sell too many acres 720 PRINT "YOU OWN ONLY ";acres;" ACRES." 730 RETURN REM Roll a 6-side dice in c 800 c=RND(5)+1 801 RETURN REM An invalid order was entered (e.g. buy a negative quantity of acres) 850 PRINT: PRINT "HAMURABI: I CANNOT DO WHAT YOU WISH." 855 PRINT "GET YOURSELF ANOTHER STEWARD!!!!!" 857 GOTO 990 REM End of game 860 PRINT: PRINT "IN YOUR TERM "; INT(percStarved); "% "; 862 PRINT "PEOPLE DIED ON AVERAGE EACH YEAR. A TOTAL OF "; 865 PRINT dead;"!!": app=acres/population 870 PRINT "YOU STARTED WITH 10 ACRES/PERSON AND ENDED WITH "; 875 PRINT INT(app);" ACRES/PERSON.": PRINT 880 IF percStarved>33.0 THEN 565: REM Impeachemnt message 885 IF app<7.0 THEN 565 890 IF percStarved>10.0 THEN 940 892 IF app<9.0 THEN 940 895 IF percStarved>3.0 THEN 960 896 IF app<10.0 THEN 960 900 PRINT "A FANTASTIC PERFORMANCE!!! CHARLEMANGE, DISRAELI, AND "; 905 PRINT "JEFFERSON COMBINED COULD NOT HAVE DONE BETTER!":GOTO 990 940 PRINT "YOUR HEAVY-HANDED PERFORMANCE SMACKS OF NERO AND IVAN IV. "; 945 PRINT "THE PEOPLE (REMIANING) FIND YOU AN UNPLEASANT RULER, AND, "; 950 PRINT "FRANKLY, HATE YOUR GUTS!!":GOTO 990 960 PRINT "YOUR PERFORMANCE COULD HAVE BEEN SOMEWHAT BETTER, BUT "; 965 PRINT "REALLY WASN'T TOO BAD AT ALL. ";INT(0.8*RND(population));" PEOPLE "; 970 PRINT "WOULD DEARLY LIKE TO SEE YOU ASSASSINATED BUT WE ALL HAVE OUR "; 975 PRINT "TRIVIAL PROBLEMS." 990 PRINT: FOR n=1 TO 10: 'BELL: NEXT n 995 PRINT "SO LONG FOR NOW.": PRINT 999 END
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 bug905.bas -o example.xex altirra example.xex # Windows ugbc.atari.exe bug905.bas -o example.xex altirra example.xex
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 bug905.bas -o example.xex altirra example.xex # Windows ugbc.atarixl.exe bug905.bas -o example.xex altirra example.xex
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 bug905.bas -o example.prg x64sc example.prg # Windows ugbc.c64.exe bug905.bas -o example.prg x64sc example.prg
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.c64reu bug905.bas -o example.prg x64sc -reu example.prg # Windows ugbc.c64reu.exe bug905.bas -o example.prg x64sc -reu example.prg
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 bug905.bas -o example.prg yape example.prg # Windows ugbc.plus4.exe bug905.bas -o example.prg yape example.prg
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 bug905.bas -o example.prg xplus4 example.prg # Windows ugbc.plus4.exe bug905.bas -o example.prg xplus4 example.prg
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 bug905.bas -o example.bin xroar -rompath (percorso ROM) example.bin # Windows ugbc.d32.exe bug905.bas -o example.bin xroar.exe -rompath (percorso ROM) example.bin
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 bug905.bas -o example.bin xroar -rompath (percorso ROM) example.bin # Windows ugbc.d64.exe bug905.bas -o example.bin xroar.exe -rompath (percorso ROM) example.bin
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 bug905.bas -o example.bin dcmoto example.bin (scegliere example.bin) (scegliere BASIC 128) CLEAR,&H2FFF: LOADM"CASS:",R: EXEC # Windows ugbc.pc128op.exe bug905.bas -o example.bin dcmoto example.bin (scegliere BASIC 128) CLEAR,&H2FFF: LOADM"CASS:",R: EXEC
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 bug905.bas -o example.bin dcmoto example.bin (scegliere example.bin) (scegliere BASIC 128) CLEAR,&H2FFF: LOADM"CASS:",R: EXEC # Windows ugbc.mo5.exe bug905.bas -o example.bin dcmoto example.bin (scegliere BASIC 128) CLEAR,&H2FFF: LOADM"CASS:",R: EXEC
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 bug905.bas -o example.prg xvic --memory 24k example.prg # Windows ugbc.vic20.exe bug905.bas -o example.prg xvic --memory 24k example.prg
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 bug905.bas -o example.tap Speccy example.tap # Windows ugbc.zx.exe bug905.bas -o example.tap Speccy example.tap
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:
# Linux ugbc.coleco bug905.bas -o example.rom openmsx -machine \"COL - ColecoVision\" -cart example.rom # Windows ugbc.coleco.exe bug905.bas -o example.rom bluemsx -machine \"COL - ColecoVision\" example.rom
# Linux ugbc.coleco bug905.bas -o example.rom bluemsx /machine \"COL - ColecoVision\" /rom1 example.rom # Windows ugbc.coleco.exe bug905.bas -o example.rom bluemsx /machine \"COL - ColecoVision\" /rom1 example.rom
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 bug905.bas -o example.rom bluemsx /machine \"SEGA - SC-3000\" /rom1 example.rom # Windows ugbc.sc3000.exe bug905.bas -o example.rom bluemsx /machine \"SEGA - SC-3000\" /rom1 example.rom
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 bug905.bas -o example.rom bluemsx /machine \"SEGA - SG-1000\" /rom1 example.rom # Windows ugbc.sg1000.exe bug905.bas -o example.rom bluemsx /machine \"SEGA - SG-1000\" /rom1 example.rom
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, apri una segnalazione su GitHub per questo specifico esempio. Grazie!