-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSIMODUL.BAS
305 lines (305 loc) · 11.4 KB
/
SIMODUL.BAS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
1 GOTO 10000
100 ' CURSOR - JOYSTICK
110 XV=XC:YV=YC:A=STICK(0) OR STICK(1):IF A=0 THEN RETURN
120 XC=XC+IC*((A=6)OR(A=7)OR(A=8))-IC*((A=2)OR(A=3)OR(A=4))
130 YC=YC+IC*((A=8)OR(A=1)OR(A=2))-IC*((A=4)OR(A=5)OR(A=6))
140 IF XC>ME OR XC<MO OR YC>MS OR YC<MN THEN XC=XV:YC=YV
150 PUT SPRITE 0,(XC-4,YC-4),CC
190 RETURN
200 ' RATON
210 A=PAD(12)
220 XV=XC:YV=YC
230 XC=XC+PAD(13)/4:YC=YC+PAD(14)/4
240 IF XC>ME OR XC<MO OR YC>MS OR YC<MN THEN XC=XV:YC=YV
250 PUT SPRITE 0,(XC-4,YC-4),CC
260 RETURN
300 ' TABLETA GRAFICA
399 ' STRIG 1
400 ON TP GOTO 410,420,440,470,480,490
410 LINE(XV,YV)-(XC,YC),CO:RETURN
420 LINE(XV,YV)-(XC,YC),CO:LINE(XV+1,YV)-(XC+1,YC),CO
430 LINE(XV,YV+1)-(XC,YC+1),CO:LINE(XV+1,YV+1)-(XC+1,YC+1),CO:RETURN
440 LINE(XV,YV)-(XC,YC),CO
450 LINE(XV+1,YV)-(XC+1,YC),CO:LINE(XV-1,YV)-(XC-1,YC),CO
460 LINE(XV,YV+1)-(XC,YC+1),CO:LINE(XV,YV-1)-(XC,YC-1),CO:RETURN
470 LINE(XV-1,YV-1)-(XC-1,YC-1),CO:LINE(XV+1,YV-1)-(XC+1,YC-1),CO:LINE(XV-1,YV+1)-(XC-1,YC+1),CO:LINE(XV+1,YV+1)-(XC+1,YC+1),CO:GOTO 440
480 LINE(XV-2,YV)-(XC-2,YC),CO:LINE(XV+2,YV)-(XC+2,YC),CO:LINE(XV,YV+2)-(XC,YC+2),CO:LINE(XV,YV-2)-(XC,YC-2),CO:GOTO 470
490 LINE(XV-2,YV-1)-(XC-2,YC-1),CO:LINE(XV+2,YV+1)-(XC+2,YC+1),CO:LINE(XV-1,YV+2)-(XC-1,YC+2),CO:LINE(XV+1,YV-2)-(XC+1,YC-2),CO
500 LINE(XV+2,YV-1)-(XC+2,YC-1),CO:LINE(XV-2,YV+1)-(XC-2,YC+1),CO:LINE(XV-1,YV-2)-(XC-1,YC-2),CO:LINE(XV+1,YV+2)-(XC+1,YC+2),CO:GOTO 480
1000 ' DIBUJO
1010 ON ID GOSUB 100,200,300
1020 IF STRIG(0) OR STRIG(1) THEN GOSUB 400
1030 IF STRIG(3) OR STRIG(4) OR INKEY$=CHR$(13) THEN PUT SPRITE 0,(0,212):RETURN
1040 GOTO 1010
1100 ' LINEAS
1110 ON ID GOSUB 100,200,300
1120 IF STRIG(0) OR STRIG(1) THEN XL=XC:YL=YC:PUT SPRITE 31,(XL-4,YL-4),9,0:GOTO 1135
1125 IF STRIG(3) OR STRIG(4) OR INKEY$=CHR$(13) THEN PUT SPRITE 31,(0,212):PUT SPRITE 0,(0,212):RETURN
1130 GOTO 1110
1135 IF STRIG(0) OR STRIG(1) THEN 1135
1140 ON ID GOSUB 100,200,300
1145 PUT SPRITE 0,(XC-4,YC-4),CC,0
1150 IF STRIG(0) OR STRIG(1) THEN 1170
1160 IF STRIG(3) OR STRIG(4) OR INKEY$=CHR$(13) THEN PUT SPRITE 31,(0,212):PUT SPRITE 0,(0,212):RETURN
1165 GOTO 1140
1170 XV=XL:YV=YL:GOSUB 400
1180 PUT SPRITE 31,(0,212)
1190 IF STRIG(0) OR STRIG(1) THEN 1190
1195 GOTO 1100
1200 ' MENU TP
1210 LINE (200,1)-(232,50),15,BF
1220 PUT SPRITE 1,(200,0),1,26
1230 PUT SPRITE 2,(217,0),1,27
1240 PUT SPRITE 3,(200,17),1,28
1250 PUT SPRITE 4,(217,17),1,29
1260 PUT SPRITE 5,(200,34),1,30
1270 PUT SPRITE 6,(217,34),1,31
1280 'PUT SPRITE 7,(200,51),1,32
1290 'PUT SPRITE 8,(217,51),1,33
1300 MM=2:GOSUB 9000
1310 LINE (200,1)-(232,50),14,BF
1320 FOR N=1 TO 8:PUT SPRITE N,(0,213):NEXT
1330 TP=MC:ON MC GOTO 1340,1350,1360,1370,1380,1390,1400,1410
1340 ME=126:MO=71:MN=1:MS=104:RETURN
1350 ME=125:MO=71:MN=1:MS=103:RETURN
1360 ME=125:MO=72:MN=2:MS=103:RETURN
1370 ME=125:MO=72:MN=2:MS=103:RETURN
1380 ME=124:MO=73:MN=3:MS=102:RETURN
1390 ME=124:MO=73:MN=3:MS=102:RETURN
1400 ME=126:MO=71:MN=1:MS=104:RETURN
1410 ME=126:MO=71:MN=1:MS=104:RETURN
1500 ' CLS NOT-MODULO
1510 LINE(128,1)-(183,104),15,BF
1520 LINE(71,106)-(126,209),15,BF
1530 LINE(128,106)-(183,209),15,BF
1540 RETURN
2000 ' MENU
2005 LINE (200,1)-(232,84),15,BF
2010 PUT SPRITE 1,(200,0),1,1
2020 PUT SPRITE 2,(217,0),1,2
2030 PUT SPRITE 3,(200,17),1,TT
2040 PUT SPRITE 4,(217,17),1,5
2050 PUT SPRITE 5,(200,34),1,6
2060 PUT SPRITE 6,(217,34),1,7
2070 PUT SPRITE 7,(200,51),1,8
2080 PUT SPRITE 8,(217,51),1,9
2085 PUT SPRITE 9,(200,68),1,10
2086 PUT SPRITE 10,(217,68),1,11
2090 MX=XP:MY=YP:MM=4:GOSUB 9020:XP=MX:YP=MY
2100 LINE (200,1)-(232,84),14,BF
2120 FOR N=1 TO 10:PUT SPRITE N,(0,213):NEXT
2130 ON MC GOSUB 1000,1100,2200,1200,1500,9500,3000,6000,4000,5000
2140 GOTO 2000
2200 IF CO=1 THEN CO=15:TT=4:RETURN
2210 IF CO=15 THEN CO=1:TT=3
2220 RETURN
3000 ' MENU ID
3010 LINE (200,1)-(232,33),15,BF
3020 PUT SPRITE 1,(200,0),1,12
3030 PUT SPRITE 2,(217,0),1,13
3040 PUT SPRITE 3,(200,17),1,14
3050 PUT SPRITE 4,(217,17),1,15
3060 MM=1:GOSUB 9000
3070 LINE (200,1)-(232,33),14,BF
3080 FOR N=1 TO 4:PUT SPRITE N,(0,213):NEXT
3090 ID=MC:RETURN
3100 IF MC=4 OR MC=3 THEN RETURN
4000 ' MENU SIMET 2
4010 LINE (200,1)-(232,33),15,BF
4020 PUT SPRITE 1,(200,0),1,16
4030 PUT SPRITE 2,(217,0),1,17
4040 PUT SPRITE 3,(200,17),1,18
4050 PUT SPRITE 4,(217,17),1,19
4080 MM=1:GOSUB 9000
4090 LINE (200,1)-(232,33),14,BF
4100 FOR N=1 TO 4:PUT SPRITE N,(0,213):NEXT
4110 ON MC GOTO 4120,4260,4400,4540
4120 ' MENU SIMET 2 H
4130 LINE (200,1)-(232,33),15,BF
4140 PUT SPRITE 1,(200,0),1,34
4150 PUT SPRITE 2,(217,0),1,33
4160 PUT SPRITE 3,(200,17),1,35
4170 PUT SPRITE 4,(217,17),1,36
4180 MM=1:GOSUB 9000
4190 LINE (200,1)-(232,33),14,BF
4200 FOR N=1 TO 4:PUT SPRITE N,(0,213):NEXT
4210 ON MC GOTO 4220,4230,4240,4250
4220 COPY (71,1)-(126,104) TO P:COPY P,0 TO (128,1):RETURN
4230 COPY (71,1)-(126,104) TO P:COPY P,1 TO (183,1):RETURN
4240 COPY (71,1)-(126,104) TO P:COPY P,2 TO (128,104):RETURN
4250 COPY (71,1)-(126,104) TO P:COPY P,3 TO (183,104):RETURN
4260 ' MENU SIMET 2 V
4270 LINE (200,1)-(232,33),15,BF
4280 PUT SPRITE 1,(200,0),1,34
4290 PUT SPRITE 2,(217,0),1,33
4300 PUT SPRITE 3,(200,17),1,35
4310 PUT SPRITE 4,(217,17),1,36
4320 MM=1:GOSUB 9000
4330 LINE (200,1)-(232,33),14,BF
4340 FOR N=1 TO 4:PUT SPRITE N,(0,213):NEXT
4350 ON MC GOTO 4360,4370,4380,4390
4360 COPY (71,1)-(126,104) TO P:COPY P,0 TO (71,106):RETURN
4370 COPY (71,1)-(126,104) TO P:COPY P,2 TO (71,209):RETURN
4380 COPY (71,1)-(126,104) TO P:COPY P,1 TO (126,106):RETURN
4390 COPY (71,1)-(126,104) TO P:COPY P,3 TO (126,209):RETURN
4400 ' MENU SIMET 2 DIAG
4410 LINE (200,1)-(232,33),15,BF
4420 PUT SPRITE 1,(200,0),1,34
4430 PUT SPRITE 2,(217,0),1,37
4440 PUT SPRITE 3,(200,17),1,38
4450 PUT SPRITE 4,(217,17),1,39
4460 MM=1:GOSUB 9000
4470 LINE (200,1)-(232,33),14,BF
4480 FOR N=1 TO 4:PUT SPRITE N,(0,213):NEXT
4490 ON MC GOTO 4500,4510,4520,4530
4500 COPY (71,1)-(126,104) TO P:COPY P,0 TO (128,106):RETURN
4510 COPY (71,1)-(126,104) TO P:COPY P,3 TO (183,209):RETURN
4520 COPY (71,1)-(126,104) TO P:COPY P,2 TO (128,209):RETURN
4530 COPY (71,1)-(126,104) TO P:COPY P,1 TO (183,106):RETURN
4540 RETURN
5000 ' MENU SIMET 4
5010 LINE (200,1)-(232,33),15,BF
5020 PUT SPRITE 1,(200,0),1,16
5030 PUT SPRITE 2,(217,0),1,17
5040 PUT SPRITE 3,(200,17),1,18
5050 PUT SPRITE 4,(217,17),1,19
5060 MM=1:GOSUB 9000
5070 LINE (200,1)-(232,33),14,BF
5080 FOR N=1 TO 4:PUT SPRITE N,(0,213):NEXT
5090 ON MC GOTO 5240,5100,5380,5480
5100 ' MENU SIMET 4 H
5110 LINE (200,1)-(232,33),15,BF
5120 PUT SPRITE 1,(200,0),1,34
5130 PUT SPRITE 2,(217,0),1,33
5140 PUT SPRITE 3,(200,17),1,35
5150 PUT SPRITE 4,(217,17),1,36
5160 MM=1:GOSUB 9000
5170 LINE (200,1)-(232,33),14,BF
5180 FOR N=1 TO 4:PUT SPRITE N,(0,213):NEXT
5190 ON MC GOTO 5200,5210,5220,5230
5200 COPY (71,1)-(126,104) TO P:COPY P,0 TO (128,1):COPY (71,106)-(126,209) TO P:COPY P,0 TO (128,106):RETURN
5210 COPY (71,1)-(126,104) TO P:COPY P,1 TO (183,1):COPY (71,106)-(126,209) TO P:COPY P,1 TO (183,106):RETURN
5220 COPY (71,1)-(126,104) TO P:COPY P,2 TO (128,209):COPY (71,106)-(126,209) TO P:COPY P,2 TO (128,104):RETURN
5230 COPY (71,1)-(126,104) TO P:COPY P,3 TO (183,209):COPY (71,106)-(126,209) TO P:COPY P,3 TO (183,104):RETURN
5240 ' MENU SIMET 4 V
5250 LINE (200,1)-(232,33),15,BF
5260 PUT SPRITE 1,(200,0),1,34
5270 PUT SPRITE 2,(217,0),1,33
5280 PUT SPRITE 3,(200,17),1,35
5290 PUT SPRITE 4,(217,17),1,36
5300 MM=1:GOSUB 9000
5310 LINE (200,1)-(232,33),14,BF
5320 FOR N=1 TO 4:PUT SPRITE N,(0,213):NEXT
5330 ON MC GOTO 5340,5350,5360,5370
5340 COPY (71,1)-(126,104) TO P:COPY P,0 TO (71,106):COPY (128,1)-(183,104) TO P:COPY P,0 TO (128,106):RETURN
5350 COPY (71,1)-(126,104) TO P:COPY P,2 TO (71,209):COPY (128,1)-(183,104) TO P:COPY P,2 TO (128,209):RETURN
5360 COPY (71,1)-(126,104) TO P:COPY P,1 TO (183,106):COPY (128,1)-(183,104) TO P:COPY P,1 TO (126,106):RETURN
5370 COPY (71,1)-(126,104) TO P:COPY P,3 TO (183,209):COPY (128,1)-(183,104) TO P:COPY P,3 TO (126,209):RETURN
5380 ' MENU SIMET 4 DIAG
5390 LINE (200,1)-(232,16),15,BF
5400 PUT SPRITE 1,(200,0),1,40
5410 PUT SPRITE 2,(217,0),1,41
5420 MM=0:GOSUB 9000
5430 LINE (200,1)-(232,33),14,BF
5440 FOR N=1 TO 2:PUT SPRITE N,(0,213):NEXT
5450 ON MC GOTO 5460,5470
5460 COPY (71,1)-(126,104) TO P:COPY P,2 TO (71,209):COPY (128,106)-(183,209) TO P:COPY P,2 TO (128,104):RETURN
5470 COPY (71,1)-(126,104) TO P:COPY P,1 TO (183,1):COPY (128,106)-(183,209) TO P:COPY P,1 TO (126,106):RETURN
5480 RETURN
6000 ' MENU DISCO
6010 LINE (200,1)-(232,33),15,BF
6020 PUT SPRITE 1,(200,0),1,6
6025 PUT SPRITE 2,(217,0),1,20
6030 PUT SPRITE 3,(200,17),1,21
6035 PUT SPRITE 4,(217,17),1,15
6040 MM=1:GOSUB 9000
6050 LINE (200,1)-(232,33),14,BF
6060 FOR N=1 TO 4:PUT SPRITE N,(0,213):NEXT
6070 DO=MC:IF MC=4 THEN RETURN
6080 LINE (200,1)-(232,33),15,BF
6090 PUT SPRITE 1,(200,0),1,22
6100 PUT SPRITE 2,(217,0),1,23
6110 PUT SPRITE 3,(200,17),1,24
6120 PUT SPRITE 4,(217,17),1,25
6130 MM=1:GOSUB 9000
6140 LINE (200,1)-(232,33),14,BF
6150 FOR N=1 TO 4:PUT SPRITE N,(0,213):NEXT
6155 ON ERROR GOTO 7500
6160 ON MC GOTO 6170,6220,6270,6280
6170 ' SAVE
6175 PSET(190,0):PRINT#1," SAVE "
6180 GOSUB 7000
6185 IF N$="" THEN 6000
6190 IF DO=1 THEN N$=N$+".MD1":COPY (71,1)-(126,104) TO N$
6195 IF DO=2 THEN N$=N$+".MD4":COPY (71,1)-(183,209) TO N$
6200 IF DO=3 THEN N$=N$+".SC5":BSAVE N$,0,&H76A0,S
6210 GOTO 6280
6220 ' LOAD
6225 PSET(190,0):PRINT#1," LOAD "
6230 GOSUB 7000
6235 IF N$="" THEN 6000
6240 IF DO=1 THEN N$=N$+".MD1":COPY N$,0 TO (71,1)
6245 IF DO=2 THEN N$=N$+".MD4":COPY N$,0 TO (71,1)
6250 IF DO=3 THEN N$=N$+".SC5":BLOAD N$,S
6260 GOTO 6280
6270 GOTO 6280
6280 ON ERROR GOTO 0:RETURN
7000 ' PIDE NOMBRE
7010 FOR F=1 TO 200:Z$=INKEY$:NEXT
7020 PSET (190,20):PRINT#1,"NOMBRE?"
7030 L=0:N$=""
7040 A$=INKEY$:IF A$=""THEN 7040
7050 IF A$=CHR$(8) AND L>0 THEN L=L-1:N$=LEFT$(N$,L)
7060 IF ASC(A$)>48 AND ASC(A$)<122 AND LEN(N$)<8 THEN N$=N$+A$:L=L+1
7070 PSET(190,30):PRINT#1,N$+" "
7080 IF A$=CHR$(13) THEN 7100
7090 GOTO 7040
7100 LINE(190,0)-(255,40),14,BF:RETURN
7500 PSET(190,0):PRINT#1," ERROR "
7510 IF ERR=53 THEN ER$="NOTFOUND"
7520 IF ERR=56 THEN ER$="BAD NAME"
7530 IF ERR=66 THEN ER$="DISKFULL"
7540 IF ERR=70 THEN ER$="OFF LINE"
7550 IF ERR=68 THEN ER$="PROTECTE"
7560 IF ERR=690 THEN ER$="I/OERROR"
7570 PSET(190,10):PRINT#1,ERR
7580 PSET(190,20):PRINT#1,ER$
7590 FOR F=1 TO 1000:NEXT
7600 RESUME 7610
7610 LINE(190,0)-(255,40),14,BF:RETURN
9000 ' MENU ESCOGE
9010 MX=0:MY=0
9020 PUT SPRITE 31,(200+MX*17,0+MY*17),9,32
9030 'ON ID GOTO 9040,9050,9060
9040 A=STICK(0) OR STICK(1):MX=MX+(A=7)-(A=3):MY=MY+(A=1)-(A=5)
9050 N=PAD(12):MX=MX+(PAD(13)<-6)-(PAD(13)>6):MY=MY+(PAD(14)<-6)-(PAD(14)>6)
9060 '
9070 IF MX>1 THEN MX=1
9080 IF MX<0 THEN MX=0
9090 IF MY>MM THEN MY=MM
9100 IF MY<0 THEN MY=0
9105 FOR F=1 TO 70:NEXT
9110 IF STRIG(0) OR STRIG(1) OR STRIG(3) OR STRIG(4) THEN 9120 ELSE 9020
9120 MC=MX+1+(MY*2):PUT SPRITE 31,(0,212):RETURN
9500 ' CLS
9510 LINE (70,0)-(184,210),15,BF
9520 LINE (70,0)-(184,210),1,B
9530 LINE (70,105)-(184,105),1
9540 LINE (127,0)-(127,210),1
9550 RETURN
10000 ' INICIO
10003 COLOR 1,14,14:SCREEN 5,2,0
10004 BLOAD"simod.spr",S
10005 CLS:DIM P(365)
10010 DEFINT X,Y,I,M,T,C,S,D
10015 OPEN"GRP:" FOR OUTPUT AS#1
10020 XC=99:YC=52:IX=1:IY=1:MN=1:MS=104:ME=126:MO=71:ID=2:TP=2:CO=1:SI=1:CC=9:IC=1:TT=3
10040 B$="":FOR A=1 TO 8
10050 READ D
10060 B$=B$+CHR$(D)
10070 NEXT A
10080 SPRITE$(0)=B$
10090 DATA 8,8,8,119,8,8,8,0
10120 GOSUB 9500
10160 GOTO 2000