Κόκκινοι Γίγαντες - Άσπροι Νάνοι: Πηγαίος κώδικας ( Δ. Σπινέλλη)

Diomidis Spinellis

RetroN00b
Joined
23 Οκτ 2012
Μηνύματα
1
Αντιδράσεις
3
Ήμουν 15-16 χρονών όταν δούλεψα στο λογισμικό για την εκπομπή αυτή. Βοηθούσα στην εταιρία «Πουλιάδης και Συνεργάτες», που έφερνε στην Ελλάδα τους ημιαγωγούς (και μετά) τους υπολογιστές Texas Instruments, για να έχω τη δυνατότητα να χρησιμοποιώ υπολογιστή, μια και τότε ήταν αρκετά ακριβό να έχει κάποιος δικό του υπολογιστή στο σπίτι του. Εκείνη την εποχή η εταιρία είχε δεν είχε έναν μόνιμο εργαζόμενο πέρα από τον ιδρυτή (μακαρίτη) Θανάση Πουλιάδη. Πολλά χρόνια αργότερα, έγινε μια από τις μεγαλύτερες σε τζίρο εμπορικές εταιρίες πληροφορικής στην Ελλάδα, μπήκε στο χρηματιστήριο και τελικά χρεοκόπησε.

Ήταν για μένα εντυπωσιακή εμπειρία: να γράψω κώδικα που να εμφανιστεί στην τηλεόραση, να πάμε στα αχανή στούντιο (στην Παιανία τότε) και να συζητάμε με τους τεχνικούς πώς να συνδέσουμε την έξοδο video με τα δικά τους μηχανήματα (χρειαζόταν sync lock που δεν υποστήριζε ο ΤΙ-99/4A), να γνωρίζω τις ερωτήσεις και τις απαντήσεις πριν από τους παίκτες. Άλλα μέλη της ομάδας ήταν δυο μεγαλύτεροι κύριοι (Μαράκης και Πατεράκης) που προσέδιδαν κύρος και σοβαρότητα στο εγχείρημα, μια και ο τέταρτος της ομάδας, ο Γιώργος Κυριαζής, ήταν ένα χρόνο μικρότερός μου. Ο Γιώργος στη συνέχεια δούλεψε στις μεγαλύτερες εταιρίες του χώρου των γραφικών Η/Υ: Silicon Graphics, nVidia, Apple, AMD.

Παραθέτω σε ψηφιακή μορφή μια οθόνη του παιγνιδιού όπως παράγεται από τον υπολογιστή.

Μπορείτε να βρείτε μια έκδοση του πηγαίου κώδικα της εκπομπής στη θέση http://www.dmst.aueb.gr/dds/sw/memory/ti/KOKAS.BAS

Δοκιμαστικές εκδόσεις υπάρχουν στη θέση http://www.dmst.aueb.gr/dds/sw/memory/ti/DOK.BAS και http://www.dmst.aueb.gr/dds/sw/memory/ti/DOK2.BAS

Ο κώδικας είναι γραμμένος σε BASIC και τώρα που τον βλέπω που κάνει εντύπωση πόσο μοιάζει με FORTRAN. Η μεταφορά του κώδικα από δισκέτα 5 1/4" χωρητικότητας 90kB στον ιστό δεν ήταν απλή υπόθεση, αλλά σίγουρα είχε ενδιαφέρον.
 
Τελευταία επεξεργασία από έναν συντονιστή:
Δεν ξερω τι ειναι πιο εντυπωσιακο. Οτι ποσταρατε ή οτι εχετε κρατησει source κωδικα απο τοτε?

Να ειστε καλα!

<Το βραδυ θα δοκιμασω τον κωδικα σε emulator :) >
 
Κυριε Σπινελλη καλωσηρθατε, ευχαριστουμε πολυ για τις πληροφοριες/αναμνησεις και εννοειται πως το listing θα περαστει και θα ξαναζωντανεψει αμεσα :)
 
Καλως ηλθατε και απο εμενα Κε Σπινελλη!Ευχαριστουμε!
 
Ποιος θα το φαντάζονταν οτι κάποτε θα βλέπαμε μια έκδοση του πηγαίου κώδικα της εκπομπής?

Ευχαριστούμε πολύ κύριε Σπινελλη και καλώς ήρθατε.
 
Ευχαριστουμε για τα Inside info της αγαπημενης πολλων εκπομπης.
 
Ευχαριστούμε πολύ κύριε Σπινελλη και φυσικά τον Χρήστο
 
Θα ήθελα και εγώ με την σειρά μου να ευχαριστήσω τον κ. Σπινελλη και φυσικά τον Χρήστο.
 
Κε Σπινέλλη

Με σεβασμό στις αναμνήσεις που σημάδεψαν μία ολόκληρη γενιά - σταθήκαμε αρκετά τυχεροί τελικά - σας ευχαριστώ και εγώ με τη σειρά μου για την παρουσία σας εδώ και για τις πληροφορίες που μοιραστήκατε μαζί μας.
 
Εκανα μια δοκιμη του ΚΟΚΑS.BAS :

1.jpg

Moυ εβγαλε ERROR στην γραμμη 70 και ετσι διεγραψα την 60,70 και 80 για να προχωρησει παρακατω:

2.jpg

μετα ομως μου εβγαλε BAD VALUE IN 550 :(

Χρησιμοποιησα το WIN994a και εαν θελετε μπορω να βαλω και ενα tutorial για το πως να περασετε το προγραμμα της basic στον emulator.

Μερικα screens απο το dok.bas

Untitled5.jpg

(Τα ονοματα των παικτων δεν ειναι τυχαια!:biglaugh: )

Untitled3.jpg

Untitled4.jpg
 
Τελευταία επεξεργασία από έναν συντονιστή:
Μπορείτε να βρείτε μια έκδοση του πηγαίου κώδικα της εκπομπής στη θέση http://www.dmst.aueb.gr/dds/sw/memory/ti/KOKAS.BASΔοκιμαστικές εκδόσεις υπάρχουν στη θέση http://www.dmst.aueb.gr/dds/sw/memory/ti/DOK.BAS και http://www.dmst.aueb.gr/dds/sw/memory/ti/DOK2.BAS
Κε Σπινέλλη καλησπέρα κι από μένα. Πραγματικά απίστευτο το ότι έχετε κρατήσει κώδικα! Και μάλιστα είναι αρκετά καθαρός και άρτια δομημένος. Τον παραθέτω με τη σειρά που δώσατε τα links:

Κώδικας:
10 RANDOMIZE
20 CALL CLEAR
30 CALL COLOR(1,2,8)
40 CALL SCREEN(5)
50 CALL VCHAR(1,31,31,24*4)
60 FOR I=2 TO 16
70 CALL COLOR(I,2,8)
80 NEXT I
90 FOR I=1 TO 12
100 READ A,A$
110 CALL CHAR(A,A$)
120 NEXT I
130 DEF CTR$(A$)=SEG$("                ",1,(28-LEN(A$))/2)&A$
140 DEF RAND(X)=INT(RND*X)+1
150 DATA 64,3C4299A1A199423C
160 DATA 67,0054543810101010
170 DATA 68,001028282844447C
180 DATA 70,0038545438101010
190 DATA 71,007C404040404040
200 DATA 74,007C00003800007C
210 DATA 76,0010282828444444
220 DATA 80,007C444444444444
230 DATA 82,0078444478404040
240 DATA 83,007C20100810207C
250 DATA 85,003844447C444438
260 DATA 86,003844444438007C
270 PRINT CTR$("KOKKINOI GIGANTES"):CTR$("ASPROI NANOI"): : : : : : : :CTR$("@ 1
983 DIOMHDHS SPINELLHS"): : : : : : : : : : : :
280 PRINT CTR$("PATA ENA KOYMPI"):CTR$("GIA NA ARXISEI")
290 CALL KEY(5,RET,STA)
300 IF STA=0 THEN 290
310 CALL SOUND(100,1000,0)
320 CALL VCHAR(1,3,32,28*24)
330 REM                    ----------------------------     
340 COUNT=RAND(2)
350 PRINT CTR$("OI APOSTASEIS"):CTR$("SE MILIA"): : : : : : : : : : : : : :
360 DIM W(5,8),Q$(5),N$(8)
370 FOR I=1 TO 8
380 READ N$(I)
390 NEXT I
400 DATA TOY ERMH,THS AFRODITHS,TOY ARH,TOY DIA,TOY KRONOY,TOY OYRANOY,TOY POSEIDVNA,TOY PLOYTVNA
410 FOR I=1 TO 5
420 READ Q$(I)
430 NEXT I
440 DATA POIA EINAI H MIKROTERH APOSTASH APO THN GH,POIA EINAI H MEGALYTERH APOSTASH APO THN GH
450 DATA POIO TO POSOSTO THS BARYTHTAS THS GHS,POIA H DIAMETROS,POIA H TAXYTHTA GYRV APO TON HLIO
460 FOR I=1 TO 5
470 FOR J=1 TO 8
480 READ W(I,J)
490 NEXT J
500 NEXT I
510 DATA 491E5,275E6,34E6,362E6,773E6,1594E6,2654E7,2605E6,1369E5,1609E5,247E6,5
97E6,1023E6,1946E6,2891E6,4506E6
520 DATA 38,88,39,256,117,92,123,16,3010,7610,4216,88700,75100,30900,26800,3600
530 DATA 107280,78480,54000,29160,21600,14400,12240,10440
540 A$="0001033FFF070000"
550 CALL CHAR(152,"3C7EFFFFFFFF7E3C")
560 CALL CHAR(136,A$)
570 CALL CHAR(144,A$)
580 CALL COLOR(13,8,8)
590 CALL COLOR(14,13,2)
600 CALL COLOR(15,7,2)
610 CALL COLOR(16,11,2)
620 CALL VCHAR(1,3,32,24*28)
630 CALL HCHAR(18,1,128,32*7)
640 CALL CHAR(129,"7FFFFFFFFFFFFFFE")
650 CALL CHAR(128,"FFFFFFFFFFFFFFFF")
660 FOR I=1 TO 15
670 CALL HCHAR(17+RAND(7),RAND(30)+1,129)
680 NEXT I
690 CALL COLOR(13,2,16)
700 FOR I=2 TO 30 STEP 4
710 CALL HCHAR(21,I,152)
720 NEXT I
730 CALL HCHAR(23,30,136)
740 CALL HCHAR(19,30,144)
750 CALL HCHAR(19,32,49)
760 CALL HCHAR(23,32,50)
770 FOR I=1 TO 200
780 CALL SOUND(20,1000,30*(I/30-INT(I/30)))
790 NEXT I
800 MSG$="0103"&CTR$("KOKKINOI GIGANTES")
810 GOSUB 1480
820 MSG$="0203"&CTR$("ASPROI NANOI")
830 GOSUB 1480
840 MSG$="0405OMADA"
850 GOSUB 1480
860 PS(1)=30
870 PS(2)=30
880 REM                    ---------------------------- 
890 CALL HCHAR(10,4,95,11)
900 CALL VCHAR(1,30,32,17)
910 CALL HCHAR(8,3,32,28)
920 CALL HCHAR(6,3,32,28)
930 CALL HCHAR(7,3,32,28)
940 CALL HCHAR(13,3,32,28)
950 COUNT=COUNT+1
960 CALL HCHAR(4,12,COUNT-2*INT(COUNT/2)+49)
970 TM=1+COUNT-2*INT(COUNT/2)
980 QN=RAND(5)
990 NN=RAND(8)
1000 TX$=Q$(QN)&" "&N$(NN)
1010 FOR I=1 TO LEN(TX$)
1020 CALL HCHAR(6-(I>25)-(I>51),I-26*INT(I/26)+3,ASC(SEG$(TX$,I,1)))
1030 NEXT I
1040 RC=10.04
1050 CKNUM=1
1060 FLEN=11
1070 FL=17
1080 CALL COLOR(12,-7*(TM=1)-13*(TM=2),-7*(TM=1)-13*(TM=2))
1090 CALL VCHAR(18-FL,30,120,FL)
1100 GOSUB 1540
1110 AN=VAL(RTN$)
1120 IF AN=W(QN,NN)THEN 1250
1130 IF AN1140 MSG$="1303POIO KATV "
1150 GOTO 1170
1160 MSG$="1303POIO PANV "
1170 GOSUB 1480
1180 FL=FL-1
1190 IF FL=0 THEN 880
1200 FOR I=500 TO 1000 STEP 20
1210 CALL SOUND(-99,I,0)
1220 NEXT I
1230 CALL VCHAR(1,30,32,17)
1240 GOTO 1090
1250 PS(TM)=PS(TM)-INT(FL/4)
1260 PS(TM)=-PS(TM)*(PS(TM)>0)-(PS(TM)<1)
1270 MSG$="1303POLY SVSTA"
1280 GOSUB 1480
1290 CALL SOUND(4000,-7,0)
1300 IF TM=1 THEN 1340
1310 CALL HCHAR(23,PS(2)+INT(FL/4),128)
1320 CALL HCHAR(23,PS(2),136)
1330 GOTO 1360
1340 CALL HCHAR(19,PS(1)+INT(FL/4),128)
1350 CALL HCHAR(19,PS(1),144)
1360 IF PS(TM)=2 THEN 1380
1370 GOTO 880
1380 FOR I=1 TO 50
1390 CALL SOUND(40,110+RAND(500),0,110+RAND(500),0,110+RAND(500),0)
1400 NEXT I
1410 CALL CLEAR
1420 PRINT CTR$("KOKKINOI GIGANTES"):CTR$("ASPROI NANOI"): : : : : : :"H OMADA ";TM;" NIKHSE !": : : : : : : : : : : :
1430 FOR I=1 TO 200
1440 CALL SOUND(10,1000,30*(I/30-INT(I/30)))
1450 NEXT I
1460 GOTO 10
1470 GOTO 1470
1480 REM 10010 DISPLAY @    10120 ACCEPT @ go to those lines for details 
1490 REM DISPLAY MSG$="RRCCxxxxxxxxxxxxxxxxxxxxx"
1500 FOR I=1 TO LEN(MSG$)-4
1510 CALL HCHAR(VAL(SEG$(MSG$,1,2)),I+VAL(SEG$(MSG$,3,2)),ASC(SEG$(MSG$,I+4,1)))
1520 NEXT I
1530 RETURN
1540 REM ACCEPT AT (RC,CKNUM{1 FOR NUMBERS ONLY},FLEN{POSITIVE TO BLANK}) 
1550 REM CNTR 1 CR,2,REDO,3 BACK,4 PROC'D,5 BEGIN 
1560 ROW=INT(RC)
1570 COL=(RC-INT(RC))*100
1580 DIM Z0(32)
1590 Z0$=CHR$(13)&CHR$(6)&CHR$(15)&CHR$(12)&CHR$(14)&CHR$(8)&CHR$(9)&CHR$(3)&CHR$(7)
1600 IF FLEN<0 THEN 1620
1610 CALL HCHAR(ROW,COL,ASC("_"),ABS(FLEN))
1620 FOR Z1=1 TO ABS(FLEN)+1
1630 CALL GCHAR(ROW,COL+Z1-1,Z0(Z1))
1640 NEXT Z1
1650 Z7=0
1660 Z1=1
1670 CALL HCHAR(ROW,COL+Z1-1,30)
1680 CALL KEY(0,Z3,Z4)
1690 IF Z4=0 THEN 1680
1700 CNTR=POS(Z0$,CHR$(Z3),1)
1710 ON CNTR+1 GOTO 1790,1940,1940,1940,1940,1940,1720,1720,1770,1770
1720 CALL HCHAR(ROW,COL+Z1-1,Z0(Z1))
1730 IF Z3=9 THEN 1900
1740 IF Z1=1 THEN 1670
1750 Z1=Z1-1
1760 GOTO 1670
1770 CALL HCHAR(ROW,COL+Z1-1,Z0(Z1))
1780 GOTO 1610
1790 IF CKNUM<>1 THEN 1850
1800 IF (Z3=45)+(Z1=1)=-2 THEN 1850
1810 IF (Z7=0)+(Z3=46)+(ABS(FLEN)>1)<>-3 THEN 1840
1820 Z7=1
1830 GOTO 1850
1840 IF (Z3<48)+(Z3>57)<=-1 THEN 1680
1850 IF Z0(Z1)<>46 THEN 1870
1860 Z7=0
1870 IF Z1=ABS(FLEN)+1 THEN 1900
1880 Z0(Z1)=Z3
1890 CALL HCHAR(ROW,COL+Z1-1,Z3)
1900 Z1=Z1+1
1910 IF Z1<=ABS(FLEN)+1 THEN 1670
1920 Z1=Z1-1
1930 GOTO 1670
1940 CALL HCHAR(ROW,COL+Z1-1,Z0(Z1))
1950 RTN$=""
1960 RTN=0
1970 FOR Z2=1 TO ABS(FLEN)
1980 IF Z0(Z2)<>95 THEN 2010
1990 NEXT Z2
2000 RTN$="0"
2010 FOR Z3=Z2 TO ABS(FLEN)
2020 IF Z0(Z3)=95 THEN 2050
2030 RTN$=RTN$&CHR$(Z0(Z3))
2040 NEXT Z3
2050 RTNL=LEN(RTN$)
2060 IF (RTN$="")+(CKNUM=1)=-2 THEN 1610
2070 IF CKNUM<>1 THEN 2100
2080 IF (RTN$=".")+(RTN$="-.")<=-1 THEN 1670
2090 RTN=VAL(RTN$)
2100 RETURN
Κώδικας:
100 REM (c) 1983 Diomidis d. Spinellis this is a TV game used to select theme and level of dificulty
110 CALL CLEAR :: CALL START :: CALL SCR1
120 CALL ACC(N1$,N2$,N3$,N4$)
130 W=1
140 CALL CHOICE(E$,H,W)
150 CALL MAIN(N1$,N2$,N3$,N4$,E$,H,W)
160 W=2
170 CALL CHOICE(E$,H,W)
180 CALL MAIN(N1$,N2$,N3$,N4$,E$,H,W)
190 GOTO 130
200 SUB CHOICE(E$,H,W)
205 CALL CLEAR :: DISPLAY AT(1,10):"OMADA ";W
210 CALL CHAR(95,"00000000FFFF")
220 CALL HCHAR(6,1,95,32):: DISPLAY AT(3,3):"EPISTHMH:" :: DISPLAY AT(4,3):"EPIPEDO DYSKOLIAS:"
230 CALL EPIST(E$)
240 CALL HCHAR(7,1,32,(24-6)*32):: CALL DELSPRITE(ALL)
250 DISPLAY AT(3,12):E$
260 CALL HARD(H)
270 DISPLAY AT(4,21):H
275 CALL HCHAR(7,1,32,(24-6)*32):: CALL DELSPRITE(ALL)
277 CALL KEY(5,RET,STA):: IF STA=0 THEN 277
280 SUBEND
290 SUB START !DEFINE GREEK CHARACTERS AND FUNCTIONS
300 FOR I=1 TO 12
310 READ A,A$
320 CALL CHAR(A,A$)
330 NEXT I
340 DATA 64,364299A1A199423C
350 DATA 67,0054543810101010
360 DATA 68,001028282844447C
370 DATA 70,0038545438101010
380 DATA 71,007C404040404040
390 DATA 74,007C00003800007C
400 DATA 76,0010282828444444
410 DATA 80,007C444444444444
420 DATA 82,0078444478404040
430 DATA 83,007C20100810207C
440 DATA 85,003844447C444438
450 DATA 86,003844444438007C
460 SUBEND
470 SUB HARD(HARD)!FIND THE LEVEL OF HARDNESS
480 CALL CHAR(128,"030F3F3F7F7FFFFFFFFF7F7F3F3F0F03C0F0FCFCFEFEFFFFFFFFFEFEFCFCF
0C0")
490 CALL CHAR(132,"E1818101010101FEFE010101018181E1878181808080807F7F80808080818
187")
500 CALL MAGNIFY(4)
510 FOR I=0 TO 4
520 S=I+9
530 CALL SPRITE(#S,128,7,SIN(I/4*PI)*50+100,COS(I/4*PI)*60+110)
540 CALL HCHAR((SIN(I/4*PI)*50+100)/32+12,(COS(I/4*PI)*60+110)/24+11,53-I)
550 NEXT I
560 CALL SPRITE(#8,132,2,82,105)
570 CALL JOYST(1,X,Y)
580 CALL MOTION(#8,10*(Y=+4)-10*(Y=-4),10*(X=-4)-10*(X=+4))
590 CALL KEY(1,RET,STA)
600 IF RET=18 THEN CALL FIND(HARD):: IF HARD<>0 THEN SUBEXIT
610 GOTO 570
620 SUBEND
630 SUB FIND(HARD)
635 HARD=0
640 FOR I=9 TO 13 :: CALL COINC(#I,#8,11,A):: IF A THEN 670
650 NEXT I
660 HARD=0 :: SUBEXIT
670 CALL SOUND(100,1000,0)
680 CALL COLOR(#I,10)
690 CALL SOUND(100,500,0)
700 CALL COLOR(#I,9)
710 HARD=14-I
720 SUBEND
730 SUB EPIST(EPIS$)
735 A=0
740 CALL MAGNIFY(2)
750 CALL CHAR(96,"080402FF02040800FF818080808081FF")
760 RESTORE 820
770 FOR I=1 TO 5
780 READ A$(I)
790 CALL SPRITE(#I,97,11,8*(3*I+7)-3,30)
800 DISPLAY AT(3*I+8,4):A$(I)
810 NEXT I
820 DATA ASTRONOMIA,BIOLOGIA,XHMEIA,FYSIKH,GEVGRAFIA
830 CALL SPRITE(#6,96,5,62,30)
840 CALL JOYST(1,Q,Y)
850 CALL MOTION(#6,10*(Y=+4)-10*(Y=-4),10*(X=-4)-10*(X=+4))
860 CALL KEY(1,RET,STA)
870 IF RET=18 THEN CALL FINEP(A)
880 IF A=0 THEN 840
890 EPIS$=A$(A)
900 SUBEND
910 SUB FINEP(I)
920 FOR I=1 TO 5
930 CALL COINC(#6,#I,5,A)
940 IF A THEN CALL COLOR(#I,7):: CALL SOUND(100,1000,0):: SUBEXIT
950 NEXT I
960 I=0
970 SUBEND
980 SUB SCR1
990 DEF CTR$(W$)=SEG$("                ",1,(28-LEN(W$))/2)&W$
1000 DISPLAY AT(1,1):CTR$("KOKKINOI GIGANTES")
1010 DISPLAY AT(2,1):CTR$("ASPROI NANOI")
1020 DISPLAY AT(10,1):CTR$("@ 1983 DIOMHDHS SPINELLHS")
1030 DISPLAY AT(23,1):CTR$("PATA ENA KOYMPI")
1040 DISPLAY AT(24,1):CTR$("GIA NA ARXISEI")
1050 CALL KEY(5,RET,STA):: IF STA=0 THEN 1050
1060 CALL CLEAR :: CALL SOUND(100,1000,0)
1070 SUBEND
1080 SUB ACC(N1$,N2$,N3$,N4$)
1090 CALL CLEAR
1100 DISPLAY AT(4,1):"OMADA 1"
1110 ACCEPT AT(5,1)VALIDATE(UALPHA)SIZE(10)BEEP:N1$
1120 ACCEPT AT(6,1)VALIDATE(UALPHA)SIZE(10)BEEP:N2$
1130 DISPLAY AT(8,1):"OMADA 2"
1140 ACCEPT AT(9,1)VALIDATE(UALPHA)SIZE(10)BEEP:N3$
1150 ACCEPT AT(10,1)VALIDATE(UALPHA)SIZE(10)BEEP:N4$
1160 CALL CLEAR
1170 SUBEND
1180 SUB MAIN(N1$,N2$,N3$,N4$,E$,H,W)
1190 CALL CLEAR :: CALL DELSPRITE(ALL):: CALL CHAR(128,"181818181818181818181818FFFF1818"):: CALL HCHAR(9,1,95,32):: CALL VCHAR(1,15,128,24)
1195 CALL VCHAR(9,15,129)
1200 DISPLAY AT(1,4)SIZE(7):"OMADA 1"
1210 DISPLAY AT(1,19)SIZE(7):"OMADA 2"
1220 DISPLAY AT(3,1)SIZE(2):"1:"
1230 DISPLAY AT(3,3)SIZE(10):N1$
1240 DISPLAY AT(3,16)SIZE(2):"1:"
1250 DISPLAY AT(3,18)SIZE(10):N3$
1260 DISPLAY AT(4,1)SIZE(2):"2:"
1270 DISPLAY AT(4,3)SIZE(10):N2$
1280 DISPLAY AT(4,16)SIZE(2):"2:"
1290 DISPLAY AT(4,18)SIZE(10):N4$
1300 DISPLAY AT(6,1)SIZE(7):"BAUMOI:"
1310 DISPLAY AT(6,7)SIZE(3):P1
1320 DISPLAY AT(6,16)SIZE(7):"BAUMOI:"
1330 DISPLAY AT(6,23)SIZE(3):P2
1350 DISPLAY AT(10,4)SIZE(7):"ERVTHSH"
1360 DISPLAY AT(10,19)SIZE(7):"ERVTHSH"
1370 DISPLAY AT(12,1)SIZE(9):"DYSKOLIA:"
1380 DISPLAY AT(12,16)SIZE(9):"DYSKOLIA:"
1390 DISPLAY AT(13,1)SIZE(9):"EPISTHMH:"
1400 DISPLAY AT(13,16)SIZE(9):"EPISTHMH:"
1410 DISP=-15*(W=2)
1420 DISPLAY AT(12,10+DISP)SIZE(2):H
1430 DISPLAY AT(14,2+DISP)SIZE(11):E$
1440 DISPLAY AT(22,1+DISP)SIZE(6):"SVSTH?"
1450 ACCEPT AT(22,7+DISP)VALIDATE("NAIOX")BEEP SIZE(3):R$
1460 IF (R$<>"NAI")AND(R$<>"OXI")THEN 1450
1470 IF W=2 THEN P2=P2-H*(R$="NAI")+H*(R$="OXI"):: IF P2<0 THEN P2=0
1480 IF W=1 THEN P1=P1-H*(R$="NAI")+H*(R$="OXI"):: IF P1<0 THEN P1=0
1490 CALL SOUND(100,1000,0)
1500 DISPLAY AT(6,7)SIZE(3):P1
1510 DISPLAY AT(6,23)SIZE(3):P2
1520 CALL KEY(5,RET,STA)
1530 IF STA=0 THEN 1520
1540 SUBEND
Κώδικας:
100 REM (c) 1983 Diomidis d. Spinellis this is a TV game used to select theme and level of dificulty
110 CALL CLEAR :: CALL START :: CALL SCR1
120 CALL ACC(N1$,N2$,N3$,N4$)
130 W=1
140 CALL CHOICE(E$,H,W)
150 CALL MAIN(N1$,N2$,N3$,N4$,E$,H,W)
160 W=2
170 CALL CHOICE(E$,H,W)
180 CALL MAIN(N1$,N2$,N3$,N4$,E$,H,W)
190 GOTO 130
200 SUB CHOICE(E$,H,W)
210 CALL CLEAR :: CALL SCREEN(11):: CALL COLOR(3,16,1,4,16,1,5,16,1,6,16,1,7,16,1,8,16,1,13,16,1,14,16,1)
220 DISPLAY AT(1,7):"KOKKINOI GIGANTES"
230 DISPLAY AT(2,9):"ASPROI NANOI"
240 DISPLAY AT(4,1):"…‚‚‚‚‚‚‚‚‚‚ˆ‚ˆ‚ˆ‚ˆ‚ˆ‚†"
250 DISPLAY AT(5,1):"          12345"
260 DISPLAY AT(6,1):"‹‚‚‚‚‚‚‚‚‚‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚Š"
270 DISPLAY AT(7,1):"ASTRONOMIA     "
280 DISPLAY AT(8,1):"‹‚‚‚‚‚‚‚‚‚‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚Š"
290 DISPLAY AT(9,1):"BIOLOGIA       "
300 DISPLAY AT(10,1):"‹‚‚‚‚‚‚‚‚‚‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚Š"
310 DISPLAY AT(11,1):"GEVGRAFIA      "
320 DISPLAY AT(12,1):"‹‚‚‚‚‚‚‚‚‚‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚Š"
330 DISPLAY AT(13,1):"FYSIKH         "
340 DISPLAY AT(14,1):"‹‚‚‚‚‚‚‚‚‚‚ƒ‚ƒ‚ƒ‚ƒ‚ƒ‚Š"
350 DISPLAY AT(15,1):"XHMEIA         "
360 DISPLAY AT(16,1):"‡‚‚‚‚‚‚‚‚‚‚‰‚‰‚‰‚‰‚‰‚„"
370 DISPLAY AT(18,3):"OMADA:";W
380 CALL WHAT(E$,H)
390 CALL KEY(0,RET,STA):: IF STA=0 THEN 390
400 CALL DELSPRITE(ALL):: CALL MAGNIFY(1):: CALL CLEAR
405 CALL SCREEN(8):: CALL COLOR(3,2,1,4,2,1,5,2,1,6,2,1,7,2,1,8,2,1,13,2,1,14,2,
1)
410 SUBEND
420 SUB START !DEFINE GREEK CHARACTERS AND FUNCTIONS
430 FOR I=1 TO 13
440 READ A,A$
450 CALL CHAR(A,A$)
460 NEXT I
470 DATA 64,364299A1A199423C
480 DATA 67,0054543810101010
490 DATA 68,001028282844447C
500 DATA 70,0038545438101010
510 DATA 71,007C404040404040
520 DATA 74,007C00003800007C
530 DATA 76,0010282828444444
540 DATA 80,007C444444444444
550 DATA 82,0078444478404040
560 DATA 83,007C20100810207C
570 DATA 85,003844447C444438
580 DATA 86,003844444438007C
590 DATA 95,00000000FFFF0000
600 CALL CHAR(129,"1818181818181818000000FFFF000000181818FFFF181818181818F8F8000000")
610 CALL CHAR(133,"0000001F1F181818000000F8F81818181818181F1F000000000000FFFF181818")
620 CALL CHAR(137,"181818FFFF000000181818F8F81818181818181F1F181818DB9918E7E71899DB")
630 SUBEND
640 SUB WHAT(E$,H)
650 DISPLAY AT(20,4):"EPISTHMH:" :: DISPLAY AT(21,4):"DYSKOLIA:"
660 CALL SPRITE(#26,140,2,32,64)
670 CALL JOYST(1,X,Y)
680 CALL MOTION(#26,05*(Y=+4)-05*(Y=-4),05*(X=-4)-05*(X=+4))
690 CALL KEY(1,RET,STA)
700 IF RET=18 THEN CALL LOC(E$,H)ELSE 670
710 IF H=0 THEN 670 ELSE DISPLAY AT(20,13):E$ :: DISPLAY AT(21,13):STR$(H):: SUB EXIT
720 SUBEND
730 SUB LOC(E$,H)
770 DATA ASTRONOMIA,BIOLOGIA,GEVGRAFIA,FYSIKH,XHMEIA
780 CALL POSITION(#26,Y,X)
790 R=INT((Y+4)/8)+1 :: C=INT((X+4)/8)+1
800 IF (R>15)OR(R<7)OR(C>23)OR(C<15)THEN H=0 :: SUBEXIT
810 IF (C/2=INT(C/2))OR(R/2=INT(R/2))THEN H=0 :: SUBEXIT
820 CALL MOTION(#26,0,0)
830 CALL SOUND(100,1000,0)
840 CALL DELSPRITE(#26)
850 CALL SPRITE(#26,42,7,R*8-12,C*8-12)
860 CALL MAGNIFY(2)
862 IF P=1 THEN 870
863 RESTORE 770
865 FOR I=1 TO 5 :: READ P$(I):: NEXT I :: P=1
870 E$=P$(INT(R/2)-2):: H=INT(C/2)-6
880 SUBEND
890 SUB SCR1
900 DEF CTR$(W$)=SEG$("                ",1,(28-LEN(W$))/2)&W$
910 DISPLAY AT(1,1):CTR$("KOKKINOI GIGANTES")
920 DISPLAY AT(2,1):CTR$("ASPROI NANOI")
930 DISPLAY AT(10,1):CTR$("@ 1983 DIOMHDHS SPINELLHS")
940 DISPLAY AT(23,1):CTR$("PATA ENA KOYMPI")
950 DISPLAY AT(24,1):CTR$("GIA NA ARXISEI")
960 CALL KEY(5,RET,STA):: IF STA=0 THEN 960
970 CALL CLEAR :: CALL SOUND(100,1000,0)
980 SUBEND
990 SUB ACC(N1$,N2$,N3$,N4$)
1000 CALL CLEAR
1010 DISPLAY AT(4,1):"OMADA 1"
1020 ACCEPT AT(5,1)VALIDATE(UALPHA)SIZE(10)BEEP:N1$
1030 ACCEPT AT(6,1)VALIDATE(UALPHA)SIZE(10)BEEP:N2$
1040 DISPLAY AT(8,1):"OMADA 2"
1050 ACCEPT AT(9,1)VALIDATE(UALPHA)SIZE(10)BEEP:N3$
1060 ACCEPT AT(10,1)VALIDATE(UALPHA)SIZE(10)BEEP:N4$
1070 CALL CLEAR
1080 SUBEND
1090 SUB MAIN(N1$,N2$,N3$,N4$,E$,H,W)
1100 CALL CLEAR :: CALL DELSPRITE(ALL):: CALL CHAR(141,"181818181818181818181818FFFF1818"):: CALL HCHAR(9,1,95,32):: CALL VCHAR(1,15,141,24)
1110 CALL VCHAR(9,15,142)
1120 DISPLAY AT(1,4)SIZE(7):"OMADA 1"
1130 DISPLAY AT(1,19)SIZE(7):"OMADA 2"
1140 DISPLAY AT(3,1)SIZE(2):"1:"
1150 DISPLAY AT(3,3)SIZE(10):N1$
1160 DISPLAY AT(3,16)SIZE(2):"1:"
1170 DISPLAY AT(3,18)SIZE(10):N3$
1180 DISPLAY AT(4,1)SIZE(2):"2:"
1190 DISPLAY AT(4,3)SIZE(10):N2$
1200 DISPLAY AT(4,16)SIZE(2):"2:"
1210 DISPLAY AT(4,18)SIZE(10):N4$
1220 DISPLAY AT(6,1)SIZE(7):"BAUMOI:"
1230 DISPLAY AT(6,7)SIZE(3):P1
1240 DISPLAY AT(6,16)SIZE(7):"BAUMOI:"
1250 DISPLAY AT(6,23)SIZE(3):P2
1260 DISPLAY AT(10,4)SIZE(7):"ERVTHSH"
1270 DISPLAY AT(10,19)SIZE(7):"ERVTHSH"
1280 DISPLAY AT(12,1)SIZE(9):"DYSKOLIA:"
1290 DISPLAY AT(12,16)SIZE(9):"DYSKOLIA:"
1300 DISPLAY AT(13,1)SIZE(9):"EPISTHMH:"
1310 DISPLAY AT(13,16)SIZE(9):"EPISTHMH:"
1320 DISP=-15*(W=2)
1330 DISPLAY AT(12,10+DISP)SIZE(2):H
1340 DISPLAY AT(14,2+DISP)SIZE(11):E$
1350 DISPLAY AT(22,1+DISP)SIZE(6):"SVSTH?"
1360 ACCEPT AT(22,7+DISP)VALIDATE("NAIOX")BEEP SIZE(3):R$
1370 IF (R$<>"NAI")AND(R$<>"OXI")THEN 1360
1380 IF W=2 THEN P2=P2-H*(R$="NAI")+H*(R$="OXI"):: IF P2<0 THEN P2=0
1390 IF W=1 THEN P1=P1-H*(R$="NAI")+H*(R$="OXI"):: IF P1<0 THEN P1=0
1400 CALL SOUND(100,1000,0)
1410 DISPLAY AT(6,7)SIZE(3):P1
1420 DISPLAY AT(6,23)SIZE(3):P2
1430 CALL KEY(5,RET,STA)
1440 IF STA=0 THEN 1430
1450 SUBEND
 
angel_grig είπε:
Χρησιμοποιησα το WIN994a και εαν θελετε μπορω να βαλω και ενα tutorial για το πως να περασετε το προγραμμα της basic στον emulator.
#) Μπορείς? :flower:

angel_grig είπε:
(Τα ονοματα των παικτων δεν ειναι τυχαια!:biglaugh: )
Πρέπει να παίξουμε οπωσδήποτε :D
 
Δηλαδή μετά τον Κο Σιμόπουλο, θέλετε να με πείτε ότι έχουμε τη χαρά να υποδεχτούμε και τον Κο Σπινέλλη?! :)

Τι ευχάριστη έκπληξη είναι αυτή! Με τον κίνδυνο να επαναλαμβάνομαι, καλώς ορίσατε κι ευχαριστούμε για τα πολύ ενδιαφέροντα σχόλιά σας! Με μια ματιά που έριξα στον κώδικα, έχω μείνει άφωνη! Μπράβο σας (κι ευχαριστούμε!) που διαφυλάξατε κάτι τόσο σημαντικό!

Ακόμα περισσότερο η υλοποίηση του Mr. KAT Resurrector (ευχαριστώ πολύ - δεν ξέρεις πόσο με συγκίνησες, γι' ακόμα μια φορά! :flower: ), με κέντρισε πάρα πολύ το ενδιαφέρον.

(ναι, άμα δε σου είναι κόπος το tutorial! Από το δημοτικό έχω να δω Basic! :flower: )

Όσο για το "να παίξουμε οπωσδήποτε", όποτε θέλετε! :D

Αρκεί να μη με τύχει Γεωγραφία! :sealed:
 
Γρηγορη θα τις φαμε για πρωινο! :p

Διαβασα που γραφεις οτι χτυπαει στη γραμμη 70. Απο οτι διαβαζω στο εγχειριδιο η CALL COLOR εχει 3 παραμετρους:

character-set number, foreground color code, background color code.

Οι δυο τελευταιες ειναι προφανεις και οι τιμες που τους εχουν στη γραμμη 70 ειναι μεσα στα ορια (οι κωδικοι χρωματος ειναι απο 1 - 16).

To character-set number δεν το εξηγει στο λημμα.

Βρηκα την απαντηση εδω. Οπως φαινεται και αυτη η παραμετρος ειναι εντος οριων

Set Character Codes1 32-39

2 40-47

3 48-55

4 56-63

5 64-71

6 72-79

7 80-87

8 88-95

9 96-103

10 104-111

11 112-119

12 120-127

13 128-135

14 136-143

15 144-151

16 152-159
Πες μας πως να το περασουμε σε emulator να μην ανακαλυπτουμε ξανα τον τροχο ;)
 
Με την παλιά καλή μέθοδο, γράψτο γραμμή-γραμμή. :p
 
Λοιπον ξεκιναμε:

Aρχικα κατεβαζουμε τον emulator από εδω: http://www.99er.net/download2/index.php?act=view&id=149 και το textpad από εδώ: http://www.textpad.com/download/ και τα εγκαθιστουμε

Κανουμε copy το kokas.bas και κατοπιν paste στο textpad

Διορθωνουμε την γραμμη 270 του προγραμματος όπως φαινεται πιο κατω

2a.jpg

(πριν την διορθωση ηταν ετσι)

2.jpg

Το ιδιο κανουμε και για την γραμμη 510 σβηνουμε τις γραμμες 60,70,80 (προς το παρον) και το σωζουμε στις default ρυθμισεις (PC και ANSI) ως KOKAS.BAS

Kατοπιν ανοιγουμε το win994a disk manager

3.jpg

Παταμε στο create floppy disk

4.jpg

Kατοπιν κανουμε κλικ στο browse και στο file name βαζουμε KOKAS.Tidisk και μετα save

5.jpg

Στο μενου που εμφανιζεται μετα βαζουμε ΚΟΚΑS στο internal TI disk title και παταμε create disk

6.jpg

Tωρα παταμε στο browse και επιλεγουμε τον δισκο που φτιαξαμε

7.jpg

8.jpg

Κατοπιν παταμε στο import basic source και ανοιγουμε το αρχειο ΚΟΚΑS.BAS που ειχαμε φτιαξει με το Textpad

9.jpg

Στο παραθυρακι που εμφανιζεται γραφουμε KOKAS παταμε done και κλεινουμε το disk manager

10.jpg

Tωρα ανοιγουμε το win994 simulator.Aπο το menu Disk->Insert floppy disk μας βγαζει αυτό

11.jpg

Παταμε πανω στο ΚΟΚΑS μετα κλικ στο DSK1 και κατοπιν στο insert floppy

Μετα στο Carts->ιnsert cartridge,επιλεγουμε ΤΙ extended basic και κλικ sto insert cartridge

Tωρα παταμε any key και κατοπιν το 2.Μολις εμφανιστει το ready παταμε ΤΟ CAPS LOCK (ΣΗΜΑΝΤΙΚΟ) και γραφουμε MERGE DSK1.KOKAS και περιμενουμε αρκετα (4-5 λεπτα)

Κατοπιν RUN...

(ΟΥΦ τα εγραψα :) Ελπιζω να τα καταφερετε..)
 
Τελευταία επεξεργασία από έναν συντονιστή:
Ευχαριστούμε για τον οδηγό Γρηγόρη :)

Προσπαθώ όμως αλλά ο emulator εμένα μου βγαίνει έτσι

untitled.JPG

Υγ. Σε ΧΡ είμαι 32bit

EDIT

Άκυρο βρήκα άκρη ;)

EDIT #2

Damn... error μου έβγαλε :(

EDIT #3

Από τα τόσα error που έφαγα δοκίμασα αυτό που λέει ο Nemo πιο πάνω και :d@redevil
 
Τελευταία επεξεργασία από έναν συντονιστή:
Πράγματι (ξανα-) ζούμε ιστορικές στιγμές ! Συγχαρητήρια και 1000 μπράβο σε όλους τους συντελεστές !!
 
Πίσω
Μπλουζα