forked from frje/B.A.T.II
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBOB_ST.S
6402 lines (6150 loc) · 204 KB
/
BOB_ST.S
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
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
;***************************************************************
;* *
;* B.O.B (Bio Ordinateur Bidirectionnel) *
;* *
;* "Future World" *
;* Copyrights 1990 Computer's Dream *
;* *
;****************************************************************
;MODIF POUR PERSOPRINC LE 31/1/92 SIGNALEES PAR $$$$$
;MODIF LE 4/2/92 &&&&&
;MODIF LE 6/2/92 !!!!!
;be_affi
;bio
;do_inc
;bobcomp111
;feuille
;moniteur
;bob_feuille
;do_aff ¨Erreur de syntaxe
;bob_exec
;table_fonc
;carac
;sante
;bio
;bob_editeur
;des_feuille_pro
;interac
;affialarm
;clignalarm
;do_lier
;affiche_heure
;dessine
;bob_zoom
;bob_comp ¨Erreur de syntaxe
sourisbat equ 1
sourisfhaut equ 2
sourisfdroite equ 3
sourisfbas equ 4
sourisfgauche equ 5
sourisinterpel equ 6
sourissablier equ 7
sourisutiliser equ 8
sourismenu equ 9
sourisbob equ 10
sourisvia equ 11
sourispointi equ 12
sourislibre equ 13
souriscredit equ 14
evisize equ 64
evinom equ 0
evipotvie equ 11
eviforce equ 12
eviintel equ 13
evireflex equ 14
evivital equ 15
evipercep equ 16
evicharis equ 17
evilieusrc equ 18
evilieudst equ 20
evivblsrc equ 22
evicodegen equ 26
evileader equ 30
evilove equ 31
evisavoir equ 32
bra debut
; -----------------------------------------------------
; equivalences
slarg equ 160 ; largeur ecran en octet
nbpar1 equ 35 ; nbr parametres 1
; taille fenetre BOB
bobxd equ 16
bobyd equ 71
bobxf equ 143
bobyf equ 152
; zone de clipping de la souris
_clipxd equ 20
_clipyd equ 75
_clipxf equ 250
_clipyf equ 160
; taille feuille de shema
; cette taille est definitive, elle rentre
; entierement dans le zoom en 320x200
viewsheet_maxx equ 18
viewsheet_maxy equ 12
; compteur pour le clignotement de "alarme"
initalarm equ 10
; codes
run equ 36
_stop equ 37
_end equ 38
si_gauche equ 39
si_droite equ 40
si_bas equ 41
alarme equ 32
; equivalences du compilateur TOKEN
header_max equ 5 ; 5 entrées max
body_max equ 100 ; 50 instructions max
if_max equ 40 ; 20 if max
crt_max equ 40 ; 20 crt max
; couleurs
couleur_fond equ 2
couleur_ecr equ 5
couleur_ombre equ 3
couleur_3d equ 7-2
couleur_f_prog equ 2
rouge equ 13
blanc equ 1
; equivalences du module d'execution
toklong equ 10
; structure du Token
toksr equ 0 ; etat du token
tokpc equ 2 ; pointeur de programme
toklastrun equ 6 ; adr dernier RUN
;
; ---------------------------------------------------------
; donnees initialisees par le programme
; principal
heure::
.DC.w 16
minute::
.DC.w 25
; ---------------------------------------------------------
;
; programme d'initialisation
debut:
; programme principal (code 68000)
;
bobprog::
movea.l adrbiicour,a0
move.w 14(a0),d0 ;offset anim statique
lea.l 2(a0,d0.w),a0
moveq.l #0,d1
move.w 8(a0),d1
movea.l adrdicour,a1
adda.l d1,a1
move.l a1,adrfontbob
move.w 14(a0),d1
lsl.w #2,d1
lea.l 16(a0,d1.w),a0
moveq.l #0,d1
move.w 8(a0),d1
movea.l adrdicour,a1
adda.l d1,a1
move.l a1,adrliaibob
move.w 14(a0),d1
lsl.w #2,d1
lea.l 16(a0,d1.w),a0
moveq.l #0,d1
move.w 8(a0),d1
movea.l adrdicour,a1
adda.l d1,a1
move.l a1,adrfoncbob
move.w 14(a0),d1
lsl.w #2,d1
lea.l 16(a0,d1.w),a0
moveq.l #0,d1
move.w 8(a0),d1
movea.l adrdicour,a1
adda.l d1,a1
move.l a1,adriconbob
bsr desmendep
bob_loop:
cmpi.w #2,souri_5
beq bob_fin
lea.l zone_fonc_1,a0
jsr interac
bra bob_loop
bob_fin:
jsr init_be
rts
; -----------------------------------------------------
; Dessiner le menu de depart
;
desmendep1:
jsr clear
; ombre
move.w #bobxd+1+26,d0
move.w #bobyd+1+12,d1
move.w #bobxd+1+118,d2
move.w #bobyd+1+69,d3
moveq.l #couleur_ombre,d4
jsr boxbob
; dessine le premier plan
move.w #bobxd+26,d0
move.w #bobyd+12,d1
move.w #bobxd+118,d2
move.w #bobyd+69,d3
moveq.l #couleur_ecr,d4
jsr boxbob
; affichage des icones
adicar equ ((bobyd+5)*slarg)+4*4
adisan equ ((bobyd+32)*slarg)+4*4
adibio equ ((bobyd+62)*slarg)+4*4
adipro equ ((bobyd+32)*slarg)+16*4
movea.l sys01,a0
lea.l adicar(a0),a0
movea.l adriconbob,a1 ;lea.l icone_bob,a1
jsr put_16
movea.l sys01,a0
lea.l adisan(a0),a0
movea.l adriconbob,a1 ;lea.l icone_bob,a1
lea.l 128(a1),a1
jsr put_16
movea.l sys01,a0
lea.l adibio(a0),a0
movea.l adriconbob,a1 ;lea.l icone_bob,a1
lea.l 128*2(a1),a1
jsr put_16
movea.l sys01,a0
lea.l adipro(a0),a0
movea.l adriconbob,a1 ;lea.l icone_bob,a1
lea.l 128*3(a1),a1
jsr put_16
bsr affiche_heure
move.l #affiche_heure,real_time_ad
rts
desmendep:
jsr desmendep1
jsr desmendep1
rts
adfh1 equ ((bobyd+32)*slarg)+6*4
cpt_running:
.DC.w 0
flag_running:
.DC.w 0
affiche_heure:
movem.l d0-d7/a0-a6,-(sp)
jsr jhm
move.w d1,heure
move.w d2,minute
; affichage des heures
move.w heure,d0
ext.l d0
jsr convasc
move.b chiffre+9,d0
subi.b #'0',d0
andi.l #$ff,d0
lsl.l #7,d0
movea.l sys01,a0
lea.l adfh1(a0),a0
movea.l adrfontbob,a1 ;lea.l fonte_bob,a1
adda.l d0,a1
jsr put_16
move.b chiffre+10,d0
subi.b #'0',d0
andi.l #$ff,d0
lsl.l #7,d0
movea.l sys01,a0
lea.l (adfh1+2*4)(a0),a0
movea.l adrfontbob,a1 ;lea.l fonte_bob,a1
adda.l d0,a1
jsr put_16
movea.l sys01,a0
lea.l (adfh1+4*4)(a0),a0
movea.l adrfontbob,a1 ;lea.l fonte_bob,a1
lea.l 128*10(a1),a1
jsr put_16
; affichage des minutes
move.w minute,d0
ext.l d0
jsr convasc
move.b chiffre+9,d0
subi.b #'0',d0
andi.l #$ff,d0
lsl.l #7,d0
movea.l sys01,a0
lea.l (adfh1+6*4)(a0),a0
movea.l adrfontbob,a1 ;lea.l fonte_bob,a1
adda.l d0,a1
jsr put_16
move.b chiffre+10,d0
subi.b #'0',d0
andi.l #$ff,d0
lsl.l #7,d0
movea.l sys01,a0
lea.l (adfh1+8*4)(a0),a0
movea.l adrfontbob,a1 ;lea.l fonte_bob,a1
adda.l d0,a1
jsr put_16
; ------------------------------
tst.w running ; programme a executer ?
beq.s no_prog_run
addq.w #1,cpt_running
move.w #bobxd+34,d0
move.w #bobyd+17,d1
move.w #bobxd+94,d2
move.w #bobyd+27,d3
moveq.l #couleur_fond,d4
jsr pboxbob ; de toute maniere,effacement
btst #4,cpt_running+1
beq.s no_prog_run
lea.l ch_prog+32,a0
cmpi.w #1,running
beq.s prog_run
lea.l 12(a0),a0
prog_run:
move.w #bobxd+34,d1
move.w #bobyd+17,d2
moveq.l #couleur_ecr,d4
jsr write ; de temps en temps,afficher
no_prog_run:
jsr ecrswapbob
; ------------------------------
movem.l (sp)+,d0-d7/a0-a6
rts
; -----------------------------------------------------
; BOB_ANIME: (routine optionnelle).
; dans cette routine, on mettra les animations qui
; s'executent tout le temps (en dehors de l'ecran BOB)
; par exemple une veine qui se gonfle ou un doigt qui
; bouge...
;
bob_anime:
rts
; -----------------------------------------------------
; lier les autres fonctions de BOB
;
; include work:batII/sources/bob/bob_carac.s ¨Nom de fichier non spcifi
; include work:batII/sources/bob/bob_sante.s ¨Nom de fichier non spcifi
; include work:batII/sources/bob/bob_bio.s ¨Nom de fichier non spcifi
; include work:batII/sources/bob/bob_edit.s ¨Nom de fichier non spcifi
; include work:batII/sources/bob/bob_comp.s ¨Nom de fichier non spcifi
; include work:batII/sources/bob/bob_mon.s ¨Nom de fichier non spcifi
; include work:batII/sources/bob/bob_exec.s ¨Nom de fichier non spcifi
; include work:batII/sources/bob/bob_zoom.s ¨Nom de fichier non spcifi
; *****************************************************
; *****************************************************
; ******* *******
; ******* ROUTINES GENERALES *******
; ******* *******
; *****************************************************
; *****************************************************
; -----------------------------------------------------
; ecrire avec ombrage
write:
movem.l d0-d7/a0-a6,-(sp)
movem.l d1-d4/a0,-(sp)
addq.w #1,d1
addq.w #1,d2
moveq.l #couleur_ombre,d4
jsr textbob
movem.l (sp)+,d1-d4/a0
jsr textbob
movem.l (sp)+,d0-d7/a0-a6
rts
; -----------------------------------------------------
; fonction pour sortir
sort:
.DC.w 0
exit:
move.b #255,sort
rts
; -----------------------------------------------------
; effacer l'ecran en degradant
clear:
move.w #bobxd,d0
move.w #bobyd,d1
move.w #bobxf,d2
move.w #bobyf,d3
moveq.l #couleur_fond,d4
jsr pboxbob
rts
;------------------------------------------------------
; conversion d'un chiffre hexa 32 bits
; en une chaine ASCII sur 10 caracteres
; pointée par CHIFFRE.
; le 1er caractere est le signe (+/-)
convasc:
movem.l d0-d3/a0/a1,-(sp)
lea.l chiffre,a0
moveq.l #9,d1
move.b #$2b,(a0)
tst.l d0
bge capos
move.b #$2d,(a0)
neg.l d0
capos: addq.w #1,a0
lea.l tabrang,a1
rang: move.l (a1)+,d3
move.l #$d0,d2
soust1: sub.l d3,d0
dbmi d2,soust1
neg.b d2
move.b d2,(a0)+
add.l d3,d0
dbra d1,rang
movem.l (sp)+,d0-d3/a0/a1
rts
tabrang: .DC.l 1000000000
.DC.l 100000000
.DC.l 10000000
.DC.l 1000000
.DC.l 100000
.DC.l 10000
.DC.l 1000
.DC.l 100
.DC.l 10
.DC.l 1
; -----------------------------------------------------
; * Teste les zones souris
; * A0: adresse de la table des coordonées souris
; La table est organisée comme suit XD,YD,
; XF,YF,N°fonction,dans table_fonc,elle se
; termine par $ffff.
; * real_time_ad: hors 0,on saute à l'adresse
; contenue.
interac:
; routine specifique a executer ?
tst.l real_time_ad
beq.s int_0
movea.l real_time_ad,a5
jsr (a5) ; l'executer
int_0:
jsr bob_anime
int_novbl:
tst.w souri_5 ; si rien de selectionner
beq.s interac
; fin de la boucle principale
cmpi.w #1,souri_5
bne fin_interac
anti_rebond:
tst.w souri_5
bne.s anti_rebond
int_loop:
cmpi.w #$ffff,(a0)
beq fin_interac
move.w (a0),d0
cmp.w souri_7,d0
bpl suitest
move.w 4(a0),d0
cmp.w souri_7,d0
bmi suitest
move.w 2(a0),d0
cmp.w souri_8,d0
bpl suitest
move.w 6(a0),d0
cmp.w souri_8,d0
bmi suitest
;
move.w 8(a0),d0
lsl.w #2,d0
lea.l table_fonc,a5
movea.l 0(a5,d0.w),a5
jsr (a5)
bra.s fin_interac
suitest:
lea.l 10(a0),a0
bra int_loop
fin_interac:
rts
real_time_ad:
.DC.l 0
; *****************************************************
; *****************************************************
; ******* *******
; ******* DATA *******
; ******* *******
; *****************************************************
; *****************************************************
; -----------------------------------------------------
table_fonc:
.DC.l carac ; 0
.DC.l sante ; 1
.DC.l bio ; 2
.DC.l bob_editeur ; 3
.DC.l exit ; 4
.DC.l injecter ; 5
; fonctions 3d
.DC.l droite ; 6
.DC.l gauche ; 7
.DC.l haut ; 8
.DC.l bas ; 9
.DC.l zoomp ; 10
.DC.l zoomm ; 11
.DC.l anglep ; 12
;
.DC.l diagnostic ; 13
; fonctions de l'editeur de programmation
.DC.l bob_new ; 14
.DC.l bob_feuille ; 15
.DC.l bob_bas ; 16
.DC.l bob_haut ; 17
.DC.l bob_gauche ; 18
.DC.l bob_droite ; 19
.DC.l bob_fonc ; 20
.DC.l bob_par1 ; 21
.DC.l bob_par2 ; 22
.DC.l bob_lier ; 23
.DC.l bob_effacer ; 24
; fonctions de la boite de dialogue
.DC.l db_oui ; 25
.DC.l db_non ; 26
; fonctions de l'alarme
.DC.l ra_hhigup ; 27
.DC.l ra_hlowup ; 28
.DC.l ra_mhigup ; 29
.DC.l ra_mlowup ; 30
.DC.l ra_hhigdn ; 31
.DC.l ra_hlowdn ; 32
.DC.l ra_mhigdn ; 33
.DC.l ra_mlowdn ; 34
; -----------------------------------------------------
; blocs souris pour le menu principal
zone_fonc_1:
.DC.w bobxd+16,bobyd+5,bobxd+32,bobyd+21,0 ; caracteristique
.DC.w bobxd+16,bobyd+32,bobxd+32,bobyd+48,1 ; sante
.DC.w bobxd+16,bobyd+62,bobxd+32,bobyd+78,2 ; bio
.DC.w bobxd+112,bobyd+32,bobxd+144,bobyd+48,3 ; programmation
.DC.w $ffff
; blocs souris pour la fonction caracteristique
zone_fonc_2:
.DC.w bobxd+5,bobyf-20,bobxf-5,bobyf-5,4
.DC.w $ffff
; blocs souris pour la fonction bio
zone_fonc_3:
.DC.w bobxd+5,bobyf-20,bobxf-5,bobyf-5,4
.DC.w bobxd+5,bobyd+5,bobxf-5,bobyd+5+72,5
.DC.w $ffff
; blocs souris pour la fonction sante
zone_fonc_4:
.DC.w bobxd+5,bobyd+65,bobxd+55,bobyd+75,4
.DC.w bobxd+115,bobyd+6,bobxd+126,bobyd+13,6
.DC.w bobxd+115,bobyd+14,bobxd+126,bobyd+21,7
.DC.w bobxd+115,bobyd+22,bobxd+126,bobyd+29,8
.DC.w bobxd+115,bobyd+30,bobxd+126,bobyd+37,9
.DC.w bobxd+115,bobyd+38,bobxd+126,bobyd+45,10
.DC.w bobxd+115,bobyd+46,bobxd+126,bobyd+53,11
.DC.w bobxd+115,bobyd+54,bobxd+126,bobyd+61,12
.DC.w bobxd+57,bobyd+65,bobxf-5,bobyd+75,13
.DC.w $ffff
; blocs souris pour la fonction diagnostic
zone_fonc_5:
.DC.w bobxd+5,bobyd+68,bobxd+55,bobyd+78,4
.DC.w $ffff
; blocs souris pour la fonction programmation
zone_fonc_6:
.DC.w bobxd+91,bobyf-10,bobxf-1,bobyf-1,4
.DC.w bobxd+91,bobyf-21,bobxf-1,bobyf-12,14
.DC.w bobxd,bobyd,bobxd+80,bobyf,15
.DC.w bobxd+78,bobyf-10,bobxd+88,bobyf-0,16
.DC.w bobxd+78,bobyf-20,bobxd+88,bobyf-11,17
.DC.w bobxd+78,bobyf-30,bobxd+88,bobyf-21,18
.DC.w bobxd+78,bobyf-40,bobxd+88,bobyf-31,19
.DC.w bobxd+80,bobyd+16,bobxd+95,bobyd+16+15,20
.DC.w bobxd+96,bobyd+16,bobxd+111,bobyd+16+15,21
.DC.w bobxd+112,bobyd+16,bobxd+127,bobyd+16+15,22
.DC.w bobxd+91,bobyf-32,bobxf-1,bobyf-23,23
.DC.w bobxd+91,bobyf-43,bobxf-1,bobyf-34,24
.DC.w $ffff
; blocs souris pour la fonction dialbox
zone_fonc_7:
.DC.w bobxd+5,bobyd+42,bobxd+35,bobyd+54,25
.DC.w bobxd+45,bobyd+42,bobxd+75,bobyd+54,26
.DC.w $ffff
; blocs souris pour la fonction alarme
zone_fonc_8:
.DC.w bobxd+25,bobyd+56,bobxd+56,bobyd+66,4 ; EXIT
.DC.w bobxd+11,bobyd+38,bobxd+17,bobyd+43,27
.DC.w bobxd+23,bobyd+38,bobxd+29,bobyd+43,28
.DC.w bobxd+47,bobyd+38,bobxd+53,bobyd+43,29
.DC.w bobxd+59,bobyd+38,bobxd+65,bobyd+43,30
.DC.w bobxd+11,bobyd+44,bobxd+17,bobyd+50,31
.DC.w bobxd+23,bobyd+44,bobxd+29,bobyd+50,32
.DC.w bobxd+47,bobyd+44,bobxd+53,bobyd+50,33
.DC.w bobxd+59,bobyd+44,bobxd+65,bobyd+50,34
.DC.w $ffff
; definition de la courbe du cardiogramme
; les valeurs (ordonnees) varient de -10 a +9
c_cardio:
.DC.w 0,0,0,0,0,0,0,0,0,1
.DC.w 2,2,2,1,0,0,0,0,0,0
.DC.w -2,3,6,9,6,3,-3,-1,0,0
.DC.w 0,0,0,0,0,1,1,2,2,2
.DC.w 2,1,0,0,0,0,0,0,0,0
.DC.w 0,0,0,0,0,0,0,0,0,0
c_cardiofin:
; pour l'homme vectoriel
; n° des lignes dont la couleur change pour chaque
; organe. ( $ffff = fin )
tete:
.DC.w 1,38,36,37,$ffff
tors:
.DC.w 38,2,41,11,40,26,39,35,$ffff
brag:
.DC.w 39,27,28,29,30,31,32,33,34,$ffff
brad:
.DC.w 41,3,4,5,6,7,8,9,10,$ffff
abdo:
.DC.w 40,12,43,42,25,$ffff
jamg:
.DC.w 42,19,20,21,22,23,24,$ffff
jamd:
.DC.w 43,13,14,15,16,17,18,$ffff
; datas pour la programmation de BOB
; table de correspondance
if_p2_pointe_p1:
.DC.l p1_rien
.DC.l p1_rien
.DC.l p1_rien ;p1_prevenir
.DC.l p1_rien ;p1_augmenter
.DC.l p1_rien ;p1_diminuer
.DC.l p1_rien ;p1_analyser
.DC.l p1_joueur
.DC.l p1_evi
.DC.l p1_force
.DC.l p1_intel
.DC.l p1_vital
.DC.l p1_perce
.DC.l p1_refle
.DC.l p1_chari
.DC.l p1_rien ; .DC.l p1_faim
.DC.l p1_rien ; .DC.l p1_soif
.DC.l p1_rien ; .DC.l p1_fatigue
.DC.l p1_etat
.DC.l p1_temp
.DC.l p1_pres
.DC.l p2_sub1
.DC.l p2_sub2
.DC.l p2_sub3
.DC.l p2_sub4
.DC.l p2_sub5
.DC.l p1_rien ;p1_sub6
.DC.l p1_heure
.DC.l p2_rythme
.DC.l p1_rien ;p1_fort
.DC.l p1_rien ;p1_faible
.DC.l p1_rien ;p1_normal
.DC.l p1_rien ;p1_agressif
.DC.l p1_rien ;p1_alarme
.DC.l p1_rien ;p1_shedish
.DC.l p1_rien ;p1_traduire
.DC.l p1_rien
do_p2_pointe_p1:
.DC.l p1_rien
.DC.l p1_afficher
.DC.l p1_prevenir
.DC.l p1_augmenter
.DC.l p1_diminuer
.DC.l p1_analyser
.DC.l p1_rien ;p1_joueur
.DC.l p1_rien ;p1_evi
.DC.l p1_rien ;p1_force
.DC.l p1_rien ;p1_intel
.DC.l p1_rien ;p1_vital
.DC.l p1_rien ;p1_perce
.DC.l p1_rien ;p1_refle
.DC.l p1_rien ;p1_chari
.DC.l p1_rien ;p1_faim
.DC.l p1_rien ;p1_soif
.DC.l p1_rien ;p1_fatigue
.DC.l p1_rien ;p1_etat
.DC.l p1_rien ;p1_temp
.DC.l p1_rien ;p1_pres
.DC.l p1_sub1
.DC.l p1_sub2
.DC.l p1_sub3
.DC.l p1_sub4
.DC.l p1_sub5
.DC.l p1_rien ;p1_sub6
.DC.l p1_rien ;p1_heure
.DC.l p1_rythme
.DC.l p1_rien ;p1_fort
.DC.l p1_rien ;p1_faible
.DC.l p1_rien ;p1_normal
.DC.l p1_rien ;p1_agressif
.DC.l p1_rien ;p1_alarme
.DC.l p1_rien ;p1_shedish
.DC.l p1_traduire
.DC.l p1_rien
; on pointe sur les variables possibles
; signification des codes de la table :
; l'ordre donne est aussi celui des icones...
;
; 00 = rien
; afficher
; prevenir
; augmenter
; diminuer
; analyser
; ------------ code des variables -------------
; 01 = joueur
; 02 = evi
; 03 = force
; 04 = intel
; 05 = vital
; 06 = perce
; 07 = refle
; 08 = chari
; 09 = faim
; 10 = soif
; 11 = fatigue
; 12 = etat
; 13 = temp
; 14 = pres
; 15 = sub1
; 16 = sub2
; 17 = sub3
; 18 = sub4
; 19 = sub5
; 20 = sub6
; 21 = heure
; 22 = rythme
; 23 = fort
; 24 = faible
; 25 = normal
; 26 = agressif
; ---------------------------------------------
; run
; _stop
; _end
; si gauche ........ pour la fonction si
; si droite ........ ,, ,,
; si bas ........ ,, ,,
;
p1_rien:
.DC.w 0,$ffff
p1_afficher:
.DC.w 3,4,5,6,7,8,9,10,11,12,13,14
.DC.w 15,16,17,18,19,21,22,$ffff
p1_prevenir:
.DC.w 1,$ffff
p1_augmenter:
.DC.w 15,16,17,18,19,22,$ffff
p1_diminuer:
;;;;; .DC.w 15,16,17,18,19,22,$ffff
.DC.w 22,-1
p1_analyser:
.DC.w 1,2,$ffff
p1_joueur:
.DC.w 9,10,11,$ffff ; faim,soif,fatigue
p1_evi:
.DC.w 9,10,11,26,28,$ffff
p1_force:
.DC.w 23,24,25,$ffff ; fort,faible,normal
p1_intel:
.DC.w 23,24,25,$ffff
p1_vital:
.DC.w 23,24,25,$ffff
p1_perce:
.DC.w 23,24,25,$ffff
p1_refle:
.DC.w 23,24,25,$ffff
p1_chari:
.DC.w 23,24,25,$ffff
p1_faim:
.DC.w 23,24,25,$ffff
p1_soif:
.DC.w 23,24,25,$ffff
p1_fatigue:
.DC.w 23,24,25,$ffff
p1_etat:
.DC.w 23,24,25,$ffff
p1_temp:
.DC.w 23,24,25,$ffff
p1_pres:
.DC.w 23,24,25,$ffff
p1_sub1:
.DC.w 25,$ffff
p1_sub2:
.DC.w 25,$ffff
p1_sub3:
.DC.w 25,$ffff
p1_sub4:
.DC.w 25,$ffff
p1_sub5:
.DC.w 25,$ffff
p1_sub6:
.DC.w 25,$ffff
p1_heure:
.DC.w 27,$ffff
p1_rythme:
.DC.w 25,$ffff
p1_traduire:
.DC.w 30,$ffff
p2_sub1:
.DC.w 23,25,$ffff
p2_sub2:
.DC.w 23,25,$ffff
p2_sub3:
.DC.w 23,25,$ffff
p2_sub4:
.DC.w 23,25,$ffff
p2_sub5:
.DC.w 23,25,$ffff
p2_sub6:
.DC.w 23,25,$ffff
p2_rythme:
.DC.w 23,24,25,$ffff
; derniere instruction compilee
acjc:
.DC.l 0
; type de branche compilee
; 1 : branche IF
; 2 : branche CRT
typebranche:
.DC.w 0
; pour le module d'execution, tables de redirection
; vers les librairies (IF et DO)
; ex:
; "6,IF_JOUEUR" provoque l'execution de la routine
; IF_JOUEUR si le premier parametre de la fonction
; IF est egal à 6, etc...
exiflist:
.DC.w 6
.DC.l if_joueur
.DC.w 7
.DC.l if_evi
.DC.w 8
.DC.l if_force
.DC.w 9
.DC.l if_intel
.DC.w 10
.DC.l if_vital
.DC.w 11
.DC.l if_perce
.DC.w 12
.DC.l if_refle
.DC.w 13
.DC.l if_chari
.DC.w 14
.DC.l if_faim
.DC.w 15
.DC.l if_soif
.DC.w 16
.DC.l if_fatig
.DC.w 17
.DC.l if_etat
.DC.w 18
.DC.l if_temp
.DC.w 19
.DC.l if_pres
.DC.w 20
.DC.l if_sub1
.DC.w 21
.DC.l if_sub2
.DC.w 22
.DC.l if_sub3
.DC.w 23
.DC.l if_sub4
.DC.w 25
.DC.l if_sub5
.DC.w 26
.DC.l if_heure
.DC.w 27
.DC.l if_rythme
.DC.w $ffff
exdolist:
.DC.w 1
.DC.l do_aff
.DC.w 2
.DC.l do_prev
.DC.w 3
.DC.l do_inc
.DC.w 4
.DC.l do_dec
.DC.w 5
.DC.l do_ana
.DC.w 20
.DC.l do_subn
.DC.w 21
.DC.l do_subn
.DC.w 22
.DC.l do_subn
.DC.w 23
.DC.l do_subn
.DC.w 24
.DC.l do_subn
.DC.w 27
.DC.l do_rythn
.DC.w 34
.DC.l do_trad
.DC.w $ffff
; pour le module d'execution, fonction IF
; "ifxxxtab" est une table qui donne le code de validite
; pour le parametre 2 (deuxieme chiffre ds la table)
; ex: 9,1 veut dire si D0=9 (par2) si vevi=1 la condition
; est vraie.
iffaim: .DC.b 9,1,-1
ifsoif: .DC.b 10,1,-1
iffatig: .DC.b 11,1,-1
ifcartab:
.DC.b 23,4,24,5,25,6
.DC.b $ff
ifheutab:
.DC.b 27,1
.DC.b $ff
.EVEN
; *****************************************************************
; *****************************************************************
; ********************* **************************
; ********************* **** *** **************************
; ********************* * * * **************************
; ********************* *** * * **************************
; ********************* * * * **************************
; ********************* *** *** **************************
; ********************* **************************
; *****************************************************************
; *****************************************************************
; sources 3D pour BOB (BAT II)
wlarg equ 3 ; largeur fenetre 3d (144-80)/16
whigh equ 60 ; hauteur fenetre 3d (130-75)
; * descripteur de la structure des objets
mxangl equ 0
myangl equ 2
mzangl equ 4
dist equ 6
ad_x equ 8
ad_y equ 12
ad_z equ 16
ad_lin equ 20
mnbrcoi equ 24
mnbrlin equ 26
x0 equ 28
y0 equ 30
;************************ librairie des routines *************************
; /* calcul le sinus de D0 dans D1 */
sin:
movea.l #sintab,a1
tst.w d0
bpl.s sinsui1
addi.w #360,d0
sinsui1:
lsl.w #1,d0
move.w 0(a1,d0.w),d1
rts
sintab:
.DC.w 0,285,571,857,1142,1427,1712,1996,2280