Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 22.11.2010
Сообщений: 8

Тетрис

09.12.2010, 12:01. Показов 3891. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть код программы. Только программа не работает. Помогите, что за ошибка:
Need angle brackets for structure fill

Assembler
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
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
.MODEL TINY     ;Устанавливаем модель памяти программы (64 Кб на все = стек, код, данные)
.CODE           ;Начинаем сегмент кода (он же данных он же стека)
    ORG 100H    ;Для компиляции в com нужно указать смещение от начала в 256 байт (там Program Status Paragraph (PSP)
PROGRAM_TETRIS: ;Метка начала программы
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
    call InitGame
    jmp move1
 
Begin:  
    mov bx,asciiS
    call PrintShape
key_Pressed:
    mov ah,1
    int 16h
    jz end_kp
    jmp read_key
end_kp: 
    mov ax,speed
    cmp for,ax
    jb key_Pressed
move:   
    mov for,0
    mov ch,color
    mov color,7
    mov bx,2020h
    call PrintShape
    mov color,ch
    inc y
    call Verify
    cmp space,0
    jnz move0
    jmp end_m
move0:  
    dec y
    mov bx,asciiS
    call PrintShape
    call MoveDown
move1:  
    mov color,7
    mov yl,13
    mov xl,9
    mov yr,19
    mov xr,6
    mov bx,02020h
    call FillScr
    mov cx,nextSh
    mov ax,shapeN
    mov nextSh,ax
    mov shape,ax
    mov dl,nextCo
    mov dh,colorN
    mov nextCo,dh
    mov color,dh
    mov y,12
    mov x,12
    mov pos,0
    call NewShape
    mov bx,asciiS
    call PrintShape
    mov shape,cx
    mov color,dl
    mov y,0
    mov x,38
    call NewShape
    call Verify
    cmp space,0
    jnz tb0000
    jmp end_m
tb0000: 
    xor si,si
    mov cx,5
tb0001: 
    mov ah,table[si]
    mov al,table[si+1]
    cmp score,ax
    ja tb0002
    add si,10
    loop tb0001
    jmp wait_
tb0002: 
    mov cx,49
tb0003: 
    mov di,cx
    mov ah,table[di]
    mov al,table[di+1]
    mov table[di+10],ah
    mov table[di+11],al
    cmp di,si
    jz tb0004
    loop tb0003
tb0004: 
    mov ax,score
    mov table[si],ah
    inc si
    mov table[si],al
    inc si
    mov cx,8
    mov di,74
tb0005: 
    mov ah,nameG[di]
    mov table[si],ah
    inc si
    inc di
    loop tb0005
    mov yl,8
    mov xl,30
    mov yr,15
    mov xr,10
    mov bx,2020h
    call FillScr
    xor si,si
    mov dh,9
tb0006: 
    mov dl,20h
    mov ah,table[si]
    inc si
    mov al,table[si]
    inc si
    call WriteDec
    mov ah,0
    mov cx,8
    mov dl,40
    cmp al,0
    jnz tb0007
    mov ah,63
tb0007: 
    cmp ah,63
    jnz tb0008
    mov al,ah
    jmp tb0009
tb0008: 
    mov al,table[si]
tb0009: 
    call PrintYX
    inc si 
    inc dl
    loop tb0007
    inc dh
    cmp dh,14
    jnz tb0006
wait_:  
    mov xl,35
    mov xr,45
    mov yl,11
    mov yr,35
wait0:  
    mov dl,30
wait1:  
    mov ah,1
    int 16h
    jz wait2
    call InputName
    cmp bh,1
    jz clear
wait2:  
    mov read,1
    call PrintYX
    mov ah,colorN
    mov color,ah
    call PrintYX
    inc dl
    cmp dl,50
    jz wait0
    inc dh
    cmp dh,23
    jnz wait1
    mov dh,1
    jmp wait1
clear:  
    mov yl,1
    mov xl,30
    mov yr,23
    mov xr,10
    mov bx,2020h
    call FillScr
    mov score,0
    mov ax,score
    mov dx,090ah
    call WriteDec
    inc dl
    mov cx,5
    mov al,20h
sN0001: 
    call PrintYX
    inc dl
    loop sN0001
end_m:  
    jmp Begin
read_key:
    mov for,0
    mov ch,color
    mov color,7
    mov bx,2020h
    call PrintShape
    mov color,ch
    xor bx,bx
    xor dx,dx
    call ReadKey
    cmp al,0
    jnz bigN
    jmp case
bigN:
    cmp al,78
    jnz smallN
    jmp clear
smallN: 
    cmp al,110
    jz clear
escape: 
    cmp al,27
    jnz bigP
    jmp Quit
bigP:   
    cmp al,80
    jnz smallP
smallP: 
    cmp al,112
    jnz spaceB
    call ReadKey
    jmp Begin
spaceB: 
    cmp al,32
    jnz plus
    inc y
    call Verify
    cmp space,0
    jz spaceB
    dec y
    jmp Begin
plus:   
    cmp al,43
    jnz mines
p0001:  
    sub speed,1000
    cmp speed,0
    jz m0001
    jmp m0002
mines:  
    cmp al,45
    jz m0001
    jmp end_m
m0001:  
    add speed,1000
    cmp speed,11000
    jz p0001
m0002:  
    call Level
    jmp Begin
case:   
    mov al,ah
down:   
    cmp al,80
    jnz turn
    mov dh,1
    jmp keys
turn:   
    cmp al,72
    jnz left
    mov bl,64
    jmp keys
left:   
    cmp al,75
    jnz right
    mov dl,254
    jmp keys
right:  
    cmp al,77
    jnz insert
    mov dl,2
    jmp keys
insert: 
    cmp al,82
    jnz end_i
    mov dx,1141h
    lea si, msg1
    add si,102
    add count,420
    cmp count,560
    jbe ins000
    sub si,7
    mov count,140
ins000: 
    call WriteMsg
end_i:  
    jmp Begin
keys:   
    add x,dl
    add y,dh
    add pos,bl
    call NewShape
    call Verify
    cmp space,0
    jz end_k
    sub x,dl
    sub y,dh
    sub pos,bl
    call NewShape
end_k:  
    jmp Begin
Quit:   
    call EndGame
    mov ax,3
    int 10h
    int 20h
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
;+=====================================+
;:                                     :
;+=====================================+
InputName proc near
    push dx
    mov bh,0
    mov dh,yl
    mov dl,yr
    call ReadKey
    cmp al,0
    jz it0006
    cmp al,27
    jz Quit
    cmp nameG,1
    jnz it0000
    mov bh,1
    jmp it0007
it0000: 
    cmp al,13
    jnz it0002
    mov dl,xl
    inc dl
    mov si,74   
    mov cx,8
it0001: 
    mov read,1
    call PrintYX
    mov nameG[si],al
    inc si
    inc dl
    loop it0001
    mov nameG,1
    mov bh,1
    jmp it0007
it0002: cmp al,8
    jnz it0004
it0003: dec dl
    cmp dl,xl
    jz it0007
    mov al,32
    call PrintYX
    jmp it0006
it0004: cmp dl,xl
    jnz it0005
    inc dl
it0005: call PrintYX
    inc dl
    cmp dl,xr
    jz it0003
it0006: mov yr,dl   
it0007: pop dx  
    ret
InputName endp
;+=====================================+
;:                                     :
;+=====================================+
ReadKey proc near
    mov ah,0
    int 16h
    ret
ReadKey endp
;+=====================================+
;:                                     :
;+=====================================+
MoveDown proc near
    xor si,si
    mov cx,5
    mov bh,0
md0000: mov dl,30
md0001: mov dh,YX[si+62]
    add dh,y
    mov read,1
    call PrintYX
    cmp al,32
    jz md0004
    add dl,2
    cmp dl,52
    jnz md0001
    add score,5
    mov ax,score
    mov dx,090Ah
    call WriteDec
    xor dx,dx
    mov bx,150
    div bx
    cmp dl,0
    jnz cont
    sub speed,1000
    call Level
cont:   mov dh,YX[si+62]
    add dh,y
md0002: mov dl,30
md0003: dec dh
    mov read,1
    call PrintYX
    push ax
    mov al,20h
    mov color,ah
    call PrintYX
    pop ax
    inc dh
    call PrintYX
    inc dl
    cmp dl,50
    jnz md0003
    dec dh
    cmp dh,1
    jnz md0002
    md0004: inc si
    loop md0000
    ret
MoveDown endp
;+=====================================+
;:                                     :
;+=====================================+
Level proc near
    xor dx,dx
    mov ax,10000
    sub ax,speed
    mov bx,1000
    div bx
    mov dx,0a13h
    call WriteDec
    ret
Level endp
;+=====================================+
;:                                     :
;+=====================================+
NewShape proc near
    push ax bx cx dx si di
    xor ax,ax
    xor dx,dx
    mov bx,64
    mov al,pos
    div bx
    mov bx,5
    mul bx
    add ax,shape
    mov si,ax
    mov cx,5
    xor di,di
    mov bx,10
ns0000: xor ax,ax
    xor dx,dx
        mov al,shapes[si]
    div bx
    mov YX[di+62],al
    mov YX[di+67],dl
    inc si
    inc di
    loop ns0000
    pop di si dx cx bx ax
    ret
NewShape endp
;+=====================================+
;:->  x, y                             :
;:-------------------------------------:
;:<- space=1 - false else true         :
;+=====================================+
Verify proc near
    push ax bx cx dx si
    mov space,0
        mov si,0
    mov cx,5
v00000: mov dh,y
    mov dl,x
    add dh,YX[si+62]
    add dl,YX[si+67]
    mov read,1
    call PrintYX
    cmp al,32
    jz v00001
    mov space,1
v00001: inc si
    loop v00000
    pop si dx cx bx ax
    ret
Verify endp
;+=====================================+
;:->  bx - ascii; if space=2 verify    :
;:-------------------------------------:
;:use:  <x, y>                         :
;+=====================================+
PrintShape proc near
        push ax cx dx si
        mov si,0
    mov cx,5
ps0000: mov dh,y
    mov dl,x
    add dh,YX[si+62]
    add dl,YX[si+67]
    mov al,bh
    call PrintYX
    inc dl
    mov al,bl
    call PrintYX
    inc si
    loop ps0000
        pop si dx cx ax
        ret
PrintShape endp
;+=====================================+
;:->    bx - ascii;   <xl, yl, xr, yr> :
;+=====================================+
FillScr proc near
    push ax bx cx dx
    mov dh,yl
fs0000: mov dl,xl
    xor cx,cx
    mov cl,xr
fs0001: mov al,bh
    call PrintYX
    inc dl
    mov al,bl
    call PrintYX
    inc dl
    loop fs0001
    inc dh
    cmp dh,yr
    jnz fs0000
    pop dx cx bx ax
    ret
FillScr endp
;+=====================================+
;:->  si - offset message;  dx - y, x  :
;:-------------------------------------:
;:[] 0000h - end message;              :
;:   0001h - x=begin,  inc y;          : 
;:   0002h - x=begin,  add y,2;        :
;+=====================================+
WriteMsg proc near
    push si bx dx
wm0000: mov al,[si]
    cmp al,2
    jnz wm0001
    inc dh
    jmp wm0002
wm0001: cmp al,1
    jnz wm0003
wm0002: pop bx
    push bx
    mov dl,bl
    inc dh
    jmp wm0004
wm0003: cmp al,0
    jz wm0005
    call PrintYX
    inc dl
wm0004: inc si
    jmp wm0000
wm0005: pop dx bx si
    ret
WriteMsg endp
;+=====================================+
;:->     x - word;    dx - y, 8        :
;+=====================================+
WriteDec proc near
    push ax bx cx dx
    push dx 
    xor cx,cx
wd0000: mov bx,0ah
    xor dx,dx
    div bx
    inc cx
    pop bx
    push dx  
    push bx
    cmp al,0
        ja wd0000
    pop dx
wd0001: pop ax
    add al,30h
    call PrintYX
    inc dl
        loop wd0001
    pop dx cx bx ax
    ret
WriteDec endp
;+=====================================+
;:->  al - ascii;  dx - y, x;  <color> :
;:-------------------------------------:
;:<- al - ascii; ah - attr if read = 1 :
;+=====================================+
PrintYX proc near
    push si dx cx
    mov si,0
    xor cx,cx
    cmp dh,0
    jz pyx001
    mov cl,dh
pyx000: add si,160
    loop pyx000
pyx001: mov cl,dl
    add si,cx
    add si,cx
    mov dx,video
    mov es,dx
    cmp read,1
    jz pyx002
    mov es:[si],al
    inc si
    mov ch,color
    mov es:[si],ch
    jmp pyx003
pyx002: mov al,es:[si]
    inc si
    mov ah,es:[si]
    mov read,0
pyx003: pop cx dx si
    ret
PrintYX endp
;+=====================================+
;:                                     :
;+=====================================+
Random proc near
    push ds ax cx cs
    pop ds
    call Incr
    inc paus
    cmp paus,10
    jnz r0
    call Znak
    inc paus
    mov paus,0
r0: cmp speed,3000
    ja r4
    cmp c,0
    jnz r1
    call HS
r1: cmp c,1
    jnz r2
    call VS
r2: cmp c,2
    jnz r3
    call HS1
r3: cmp c,3
    jnz r4
    call VS1
r4: pop cx ax ds
    iret
Random endp
;=======================================
HS proc near
    call HorScroll
    inc hor_scroll
    cmp hor_scroll,8
    jnz _h0
    dec hor_scroll
    mov c,1
    cmp speed,2000
    jnz _h0
    mov c,2
_h0:    ret
HS endp
;=======================================
VS proc near
    call VerScroll
    inc ver_scroll
    cmp ver_scroll,8
    jnz _v0
    dec ver_scroll
    mov c,2
    cmp speed,3000
    jnz _v0
    mov c,3
_v0:    ret
VS endp
;=======================================
HS1 proc near
    call HorScroll
        dec hor_scroll
        cmp hor_scroll,255
        jnz _h1
    inc hor_scroll
    mov c,3
    cmp speed,2000
    jnz _h1
    mov c,0
_h1:    ret
HS1 endp
;=======================================
VS1 proc near
    call VerScroll
        dec ver_scroll
        cmp ver_scroll,255
        jnz _v1
    inc ver_scroll
    mov c,0
    cmp speed,3000
    jnz _v1
    mov c,1
_v1:    ret
VS1 endp
;==================================
;  SAP proc
;==================================
Incr proc near
    add cs:[shapeN],20
    mov ax,cs:[count]
    cmp cs:[shapeN],ax
    jb r00000
    mov cs:[shapeN],0
r00000: inc byte ptr cs:[colorN]
    cmp cs:[colorN],16
    jnz r00001
    mov cs:[colorN],9
r00001: add cs:[for],500
    ret
Incr endp
;=================================
; ZNAK proc
;=================================
Znak proc near
        push es cx si ax dx bx di
    call _znak_set
    mov ax,0a000h
    mov es,ax
    mov cx,14
    mov si,254*20h
    cmp temp ,0
    jz _t
    mov temp,0
    mov di,offset ascii+28
    jmp _t_end
_t: mov temp,1
    mov di,offset ascii+56
_t_end:
lilop:
    mov al,[di]
    mov es:[si],al
    inc si
    inc di
    loop lilop
    mov cx,14
    mov si,255*20h
lilop1:
    mov al,[di]
    mov es:[si],al
    inc si
    inc di
    loop lilop1 
    call _znak_get
    pop di bx dx ax si cx es
    ret
Znak endp
;+=====================================+
;:                                     :
;+=====================================+
InitGame proc near
;[ Antivirus test ];
    push ds
    push cs
    pop ds
    mov ah,3dh
    lea dx,fileC
    int 21h
    mov bx,ax
    xor dx,dx
    xor cx,cx
    mov ax,4202h
    int 21h
    cmp ax,0002h
    jz wf0002
    cmp ax,3088
    jbe wf0002
    mov bx,2020h
        call FillScr
    lea si,msg4
    mov dx,0c10h
    call WriteMsg
    call ReadKey
;[ File "tetris.scr" exist? ];
wf0002: mov ax,3d02h
    mov dx,offset nameF
    int 21h
    cmp ax,0002h
    jnz ls0001
;[ No ];
    xor si,si
    mov cx,50
ls0000: mov table[si],0
    inc si
    loop ls0000
    mov ah,3ch
    mov cx,20h
    int 21h
    mov handle,ax
    jmp ls0002
;[ Load score in table ];
ls0001: mov handle,ax
    mov ah,3fh
    mov bx,handle
    mov cx,50
    mov dx,offset table
    int 21h 
    mov ax,4200h
    xor cx,cx
    xor dx,dx
    int 21h
ls0002: pop ds
;[ I have EGAVGA? ];
    mov ah,12h
    mov bx,5510h
    int 10h 
    cmp bx,5510h
    jz ig0000
;[ Yes ];
    mov video,0b800h
    mov asciiF,0fcfdh
    mov asciiS,0feffh
;[ Load new ASCII symvols ];
    push cs
    pop es
    mov bp,offset ascii
    mov ax,1100h
    mov bx,0e00h
    mov dx,00fch
    mov cx,0004h
    int 10h
;[ Read old timer's vector ];
ig0000: mov ax,351ch
    int 21h
    mov oldBx,bx
    mov oldEs,es
;[ Set new vector on Random ];
    mov ax,251ch
    mov dx,offset Random
        int 21h
    mov ax,shapeN
    mov nextSh,ax
    mov ah,colorN
    mov nextCo,ah
;[ Print picture ];
    mov color,7
    mov bx,asciiF
    call FillScr
    mov color,8
    mov yl,1
    mov xl,3
    mov yr,23
    mov xr,12
    call FillScr
    mov xl,53
    call FillScr
    mov bx,0b0b0h
    mov yl,2
    mov xl,5
    mov yr,22
    mov xr,10
    call FillScr
    mov xl,55
    call FillScr
    mov color,0ch
    mov bx,02020h
    mov yl,3
    mov xl,7
    mov yr,21
        mov xr,8
    call FillScr
    mov xl,57
    call FillScr
    mov yl,9
    mov xl,30
    mov yr,13
    mov xr,10
    call FillScr
    lea si,msg
    mov dx,0809h
    call WriteMsg
    lea si,msg1
    mov dl,60
        call WriteMsg
    lea si,msg2
    mov dx,0a23h
    call WriteMsg
    lea si,msg3
    mov dx,1803h
    call WriteMsg
    ret
InitGame endp
;+=====================================+
;:                                     :
;+=====================================+
EndGame proc near
;[ Clear scren ];
    mov bx,2020h
    mov yl,0
    mov xl,0
    mov yr,24
    mov xr,80
    mov color,7
    call FillScr
;[ Load BIOS ASCII table ];
    mov ax,1101h
    mov cx,04h
    mov dx,00fch
    mov bx,0e00h
    int 10h
;[ Save table in file "tetris.res" ];
    push ds
    mov ah,40h
    mov bx,handle
    push cs
    pop ds
    mov dx,offset table
    mov cx,32h
    int 21h     
    pop ds
;[ Return timer's vector];
    mov ax,251ch
    mov dx,oldEs
    mov ds,dx
        mov dx,cs:oldBx
    int 21h
    ret
EndGame endp
;ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ
;+=====================================+
;:                                     :
;+=====================================+
wait_vert_line  proc    near
        push    ax dx
        mov dx,3DAh
@@loc_15:
        in  al,dx           ; port 3DAh, CGA/EGA vid status
        test    al,8
        jnz @@loc_15        ; Jump if not zero
@@loc_16:
        in  al,dx
        test    al,8
        jz  @@loc_16
        pop dx ax
        ret
wait_vert_line  endp
;+=====================================+
;:          znako_generator            :
;+=====================================+
_znak_set proc near
    cli
    mov dx,3c4h
    mov si,offset spar
    mov cx,2
l:  lodsw
    out dx,ax
    loop l
    sti
    mov dx,3ceh
    mov si,offset grar
    mov cx,3
l1: lodsw
    out dx,ax
    loop l1
    ret
_znak_set endp
_znak_get proc near
    cli
    mov dx,3c4h
    mov si,offset spar1
    mov cx,2
l2: lodsw
    out dx,ax
    loop l2
    sti
    mov dx,3ceh
    mov si,offset grar1
    mov cx,3
l11:    lodsw
    out dx,ax
    loop l11
    ret
_znak_get endp
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
; name  VerScroll
; title ‚ҐавчЄ*«м*Ё© б¤ўчЈ ᮤҐа¦ч¬®Ј® ҐЄа***
; Descr ”г*Єжчп ᬥй*Ґв ᮤҐа¦ч¬®Ґ ҐЄа*** ўўҐае ** n ЇчЄбҐ«®ў 
; params    word Voffset - «®ЈчзҐбЄ*п ичач** ҐЄа***
;-----------------------------------------------------------------------------
VerScroll proc near
    push es
        push ax bx cx dx si di
    xor ax,ax
    mov es,ax
    mov dx,es:[463h]
    add dx,6
    call wait_vert_line
    sub dx,6
    inc dx
    add dx,5
wait_next:
    in al,dx
    nop
    nop
    test al,8h
    jz wait_next
    sub dx,6
    mov al,8
    out dx,al
    mov al,Ver_scroll
    inc dx
    out dx,al
        pop di si dx cx bx ax
    pop es
    ret
VerScroll endp
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
; name  HorScroll
; title gorizontall б¤ўчЈ ᮤҐа¦ч¬®Ј® ҐЄа***
; Descr ”г*Єжчп ᬥй*Ґв ᮤҐа¦ч¬®Ґ left&right ** n ЇчЄбҐ«®ў 
; params    word Voffset - «®ЈчзҐбЄ*п ичач** ҐЄа***
;-----------------------------------------------------------------------------
HorScroll proc near
    push es
        push ax bx cx dx si di
    xor ax,ax
    mov es,ax
    mov dx,es:[463h]
    add dx,6
    call wait_vert_line
    sub dx,6
    add dx,5
    in al,dx
    nop
    nop
    mov dx,3c0h
    mov al,13h
    out dx,al
    mov al,Hor_scroll
    out dx,al
    mov al,20h
    out dx,al
        pop di si dx cx bx ax
    pop es
    ret
HorScroll endp
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
;ax -input start adres
;start_adres proc near
;   push es
;       push ax bx cx dx si di
;   push ax
;   xor ax,ax
;   mov es,ax
;   mov dx,es:[463h]
;   add dx,6
;   call wait_vert_line
;   sub dx,6
;   mov al,0dh
;   out dx,al
;   inc dx
;   pop ax
;   push ax
;   out dx,al
;   dec dx
;   mov al,0ch
;   out dx,al
;   inc dx
;   pop ax
;   mov al,ah
;   out dx,al
;       pop di si dx cx bx ax
;   pop es
;   ret
;start_adres endp
;+--------------------------------------------------------------------------+
;:                                  DATA                                    :
;+--------------------------------------------------------------------------+
;------------- data ЇҐаҐЇа®Ја*¬гў***п §**Є®ЈҐ*Ґа*в®а*
c   db 1
paus    db 0
;   dw 100h ;бч*еа®**ч© бЎа®б
spar    dw 402h ;§*ЇЁб ў 2 Ў**Є 
    dw 704h ;Ї®б«ч¤®ў** *¤аҐб*жчп
;   dw 300h ;®зЁбвЄ* бЎа®б*
grar    dw 204h ;2 Ў**Є ¤«п бзЁвгў***п
    dw 5h   ;§*Ў®а®** *Ґз®в*®щ *¤аҐб*жчщ
    dw 406h ;Ў**Є **зЁ**хвмбп Ї® 0*000*
;------------- data ЇҐаҐЇа®Ја*¬гў***п §**Є®ЈҐ*Ґа*в®а* 
;   dw 100h ;бч*еа®**ч© бЎа®б
spar1   dw 302h ;§*ЇЁб ў 2 Ў**Є  vsi banki
    dw 0304h;Ї®б«ч¤®ў** *¤аҐб*жчп
;   dw 300h ;®зЁбвЄ* бЎа®б*
grar1   dw 4h   ;Ў**Є ¤«п бзЁвгў***п ??? 
    dw 01005h;§*Ў®а®** *Ґз®в*®щ *¤аҐб*жчщ 
    dw 0e06h ;Ў**Є **зЁ**хвмбп Ї® 0b800* 
;--------------
Ver_scroll db 0
Hor_scroll db 0
temp db 0
;--------------
ascii   db 0FFh,000h,0DAh,06Ch,0B6h,00h,0FFh,80h,95h,0AAh,095h,0AAh,095h,80h    
    db 0FFh,080h,0B6h,09Bh,0ADh,80h,0FFh,00h,54h,0AAh,054h,0AAh,054h,00h
        db 000h,00Fh,03Fh,07Fh,07Fh,079h,063h,07Eh,07Ch,00Ch,007h,007h,005h,000h
    db 000h,0F0h,0FCh,0FEh,08Eh,86h,0C6h,7Eh,3Eh,030h,0E0h,0E0h,0A0h,00h
    db 000h,00Fh,03Fh,07Fh,071h,61h,063h,7Eh,7Ch,00Ch,007h,007h,005h,00h
        db 000h,0F0h,0FCh,0FEh,0FEh,09Eh,0C6h,07Eh,03Eh,030h,0E0h,0E0h,0A0h,000h
shapes  db  20,22,30,32,32, 20,22,30,32,32, 20,22,30,32,32, 20,22,30,32,32
        db  20,22,30,40,40, 30,40,42,44,44, 22,32,40,42,42, 30,32,34,44,44
        db  20,22,32,42,42, 30,32,34,40,40, 20,30,40,42,42, 34,40,42,44,44
        db  20,30,32,40,40, 32,40,42,44,44, 22,30,32,42,42, 30,32,34,42,42
        db  22,30,32,40,40, 30,32,42,44,44, 22,30,32,40,40, 30,32,42,44,44
        db  20,30,32,42,42, 32,34,40,42,42, 20,30,32,42,42, 32,34,40,42,42
        db  20,30,40,50,50, 50,52,54,56,56, 20,30,40,50,50, 50,52,54,56,56
        db  20,22,30,40,50, 40,50,52,54,56, 22,32,42,50,52, 40,42,44,46,56
        db  20,22,32,42,52, 40,42,44,46,50, 20,30,40,50,52, 46,50,52,54,56
        db  20,30,32,42,52, 42,44,46,50,52, 20,30,40,42,52, 44,46,50,52,54
        db  22,30,32,40,50, 40,42,52,54,56, 22,32,40,42,50, 40,42,44,54,56
        db  22,30,32,34,42, 22,30,32,34,42, 22,30,32,34,42, 22,30,32,34,42
        db  20,30,40,50,60, 60,62,64,66,68, 20,30,40,50,60, 60,62,64,66,68
        db  20,22,24,32,42, 20,30,32,34,40, 22,32,40,42,44, 24,30,32,34,44
        db  20,30,32,32,32, 22,30,32,32,32, 20,22,32,32,32, 20,22,30,30,30
        db  20,22,32,34,44, 22,24,30,32,40, 20,30,32,42,44, 24,32,34,40,42
        db  20,30,32,40,50, 42,50,52,54,56, 22,32,40,42,52, 40,42,44,46,54
        db  22,30,32,42,52, 40,42,44,46,52, 20,30,40,42,50, 44,50,52,54,56
        db  20,22,32,42,44, 24,30,32,34,40, 20,22,32,42,44, 24,30,32,34,40
        db  22,24,32,40,42, 20,30,32,34,44, 22,24,32,40,42, 20,30,32,34,44
        db  20,22,32,34,42, 22,30,32,34,40, 22,30,32,42,44, 24,30,32,34,42
        db  22,24,30,32,42, 20,30,32,34,42, 22,32,34,40,42, 22,30,32,34,44
        db  20,30,40,40,40, 40,42,44,44,44, 20,30,40,40,40, 40,42,44,44,44
        db  20,30,30,30,30, 30,32,32,32,32, 20,30,30,30,30, 30,32,32,32,32
        db  20,22,24,30,40, 20,30,40,42,44, 24,34,40,42,44, 20,22,24,34,44
        db  20,30,32,40,42, 32,34,40,42,44, 20,22,30,32,42, 30,32,34,40,42
        db  22,30,32,40,42, 30,32,34,42,44, 20,22,30,32,40, 30,32,40,42,44
        db  20,22,30,40,42, 30,34,40,42,44, 20,22,32,40,42, 30,32,34,40,44
        db  20,20,20,20,20, 20,20,20,20,20, 20,20,20,20,20, 20,20,20,20,20
msg     db   " ђҐ§г«мв*в:",2
    db   "ђiўҐ*м:   0",2
    db   " Ќ*бвгЇ**:",0
msg1    db   "Esc: ўЁеi¤",1
    db 27,"  : ўЇа*ў®",1
    db 26,"  : ў«iў®",1
    db 24,"  : ®ЎҐав",1
    db 25,"  : ў*Ё§",1
    db   "P  : Ї*г§*",1
    db   "N  : §**®ў®",1
    db   "+/-: аiўҐ*м",2
    db   "Ins: tetris",0,"pentix",0
msg2    db   "‚*иҐ i¬'п:",0
msg3    db   "(c) 1995 ‰.ЊҐ¤ўҐжмЄЁ©, I.„пЄг*, I.ЉҐЇЁз, ‚.ђҐ¤мЄ®."
    db   " ‹мўiў, 'Hackers group'.",0
msg4    db   "„® ¬Ґ*Ґ ев®бм ¤®ЇЁб*ўбп!  Њ®¦«Ёў®, в® ўiагб!",0
nameF   db   "tetris.scr",0
fileC   db   "tetris.com",0
handle  dw ?
video   dw 0b000h
asciiF  dw 0b1b1h
asciiS  dw 0dbdbh
for dw 0
oldBx   dw ?
oldEs   dw ?
shapeN  dw 0
nextSh  dw 0
shape   dw 0
colorN  db 9
nextCo  db 0
color   db 12
count   dw 140
xl  db 0
yl  db 0
xr  db 80
yr  db 23
pos db 0
x   db 38
y   db 18
space   db 0
read    db 0
score   dw 0
speed   dw 10000
nameG   db 0
YX  db 0
table   db 0
;+--------------------------------------------------------------------------+
END PROGRAM_TETRIS
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.12.2010, 12:01
Ответы с готовыми решениями:

Тетрис (самый простой)
Написать простенький Тетрис на FASM

У кого-нибудь есть тетрис на TASM?
Что только не находил, всю дорогу при компиляции исходников нахожу кучи ошибок. Может, у кого есть нормальные исходники? Просто интересно...

Тетрис
Хочу написать тетрис. Подскажите пожалуйста алгоритм. Большая проблема с созданием(рисованием) фигур.

5
4187 / 1835 / 220
Регистрация: 06.10.2010
Сообщений: 4,123
09.12.2010, 15:45
Перевожу: Нужны угловые скобки для структуры fill
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16371 / 7683 / 1080
Регистрация: 11.11.2010
Сообщений: 13,757
09.12.2010, 15:52
Zao, добавлю, компилятор еще и строку указывает на которой ошибка
0
0 / 0 / 0
Регистрация: 22.11.2010
Сообщений: 8
10.12.2010, 20:21  [ТС]
Да это всё понятно. Ошибка в 10 строке
mov bx,asciiS

Но я не понимаю. Если подставить значение asciiS, то ошибка исчезает
mov bx,0dbdbh

Таких ошибок штук 100. Может что-то не так объявлено? Может чего-то не хватает? Может адресация не правильно записана?
0
69 / 74 / 0
Регистрация: 15.12.2008
Сообщений: 302
10.12.2010, 20:49
то за ошибка, что за компилятор
0
0 / 0 / 0
Регистрация: 22.11.2010
Сообщений: 8
10.12.2010, 21:00  [ТС]
Цитата Сообщение от airyashov Посмотреть сообщение
то за ошибка, что за компилятор
Компилятор TASM
Ошибка: Need angle brackets for structure fill, начинается в 10 строке

Assembler
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
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
TITLE TETRIS
.MODEL TINY     ;Устанавливаем модель памяти программы (64 Кб на все = стек, код, данные)
ASSUME CS:CSEG, DS:CSEG, SS:CSEG  ; директива ассемблера, которая связывает сегментные регистры с именами сегментов
CSEG SEGMENT            ;Начинаем сегмент кода (он же данных он же стека)
    ORG 100H    ;Для компиляции в com нужно указать смещение от начала в 256 байт (там Program Status Paragraph (PSP)
PROGRAM_TETRIS: ;Метка начала программы
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
    call InitGame
    jmp move1
 
Begin:  
    mov bx,asciiS
    call PrintShape
key_Pressed:
    mov ah,1
    int 16h
    jz end_kp
    jmp read_key
end_kp: 
    mov ax,speed
    cmp for1,ax
    jb key_Pressed
move:   
    mov for1,0
    mov ch,color
    mov color,7
    mov bx,2020h
    call PrintShape
    mov color,ch
    inc y
    call Verify
    cmp space,0
    jnz move0
    jmp end_m
move0:  
    dec y
    mov bx,asciiS
    call PrintShape
    call MoveDown
move1:  
    mov color,7
    mov yl,13
    mov xl,9
    mov yr,19
    mov xr,6
    mov bx,02020h
    call FillScr
    mov cx,nextSh
    mov ax,shapeN
    mov nextSh,ax
    mov shape,ax
    mov dl,nextCo
    mov dh,colorN
    mov nextCo,dh
    mov color,dh
    mov y,12
    mov x,12
    mov pos,0
    call NewShape
    mov bx,asciiS
    call PrintShape
    mov shape,cx
    mov color,dl
    mov y,0
    mov x,38
    call NewShape
    call Verify
    cmp space,0
    jnz tb0000
    jmp end_m
tb0000: 
    xor si,si
    mov cx,5
tb0001: 
    mov ah,table[si]
    mov al,table[si+1]
    cmp score,ax
    ja tb0002
    add si,10
    loop tb0001
    jmp wait_
tb0002: 
    mov cx,49
tb0003: 
    mov di,cx
    mov ah,table[di]
    mov al,table[di+1]
    mov table[di+10],ah
    mov table[di+11],al
    cmp di,si
    jz tb0004
    loop tb0003
tb0004: 
    mov ax,score
    mov table[si],ah
    inc si
    mov table[si],al
    inc si
    mov cx,8
    mov di,74
tb0005: 
    mov ah,nameG[di]
    mov table[si],ah
    inc si
    inc di
    loop tb0005
    mov yl,8
    mov xl,30
    mov yr,15
    mov xr,10
    mov bx,2020h
    call FillScr
    xor si,si
    mov dh,9
tb0006: 
    mov dl,20h
    mov ah,table[si]
    inc si
    mov al,table[si]
    inc si
    call WriteDec
    mov ah,0
    mov cx,8
    mov dl,40
    cmp al,0
    jnz tb0007
    mov ah,63
tb0007: 
    cmp ah,63
    jnz tb0008
    mov al,ah
    jmp tb0009
tb0008: 
    mov al,table[si]
tb0009: 
    call PrintYX
    inc si 
    inc dl
    loop tb0007
    inc dh
    cmp dh,14
    jnz tb0006
wait_:  
    mov xl,35
    mov xr,45
    mov yl,11
    mov yr,35
wait0:  
    mov dl,30
wait1:  
    mov ah,1
    int 16h
    jz wait2
    call InputName
    cmp bh,1
    jz clear
wait2:  
    mov read,1
    call PrintYX
    mov ah,colorN
    mov color,ah
    call PrintYX
    inc dl
    cmp dl,50
    jz wait0
    inc dh
    cmp dh,23
    jnz wait1
    mov dh,1
    jmp wait1
clear:  
    mov yl,1
    mov xl,30
    mov yr,23
    mov xr,10
    mov bx,2020h
    call FillScr
    mov score,0
    mov ax,score
    mov dx,090ah
    call WriteDec
    inc dl
    mov cx,5
    mov al,20h
sN0001: 
    call PrintYX
    inc dl
    loop sN0001
end_m:  
    jmp Begin
read_key:
    mov for1,0
    mov ch,color
    mov color,7
    mov bx,2020h
    call PrintShape
    mov color,ch
    xor bx,bx
    xor dx,dx
    call ReadKey
    cmp al,0
    jnz bigN
    jmp case
bigN:
    cmp al,78
    jnz smallN
    jmp clear
smallN: 
    cmp al,110
    jz clear
escape: 
    cmp al,27
    jnz bigP
    jmp Quit
bigP:   
    cmp al,80
    jnz smallP
smallP: 
    cmp al,112
    jnz spaceB
    call ReadKey
    jmp Begin
spaceB: 
    cmp al,32
    jnz plus
    inc y
    call Verify
    cmp space,0
    jz spaceB
    dec y
    jmp Begin
plus:   
    cmp al,43
    jnz mines
p0001:  
    sub speed,1000
    cmp speed,0
    jz m0001
    jmp m0002
mines:  
    cmp al,45
    jz m0001
    jmp end_m
m0001:  
    add speed,1000
    cmp speed,11000
    jz p0001
m0002:  
    call Level
    jmp Begin
case:   
    mov al,ah
down:   
    cmp al,80
    jnz turn
    mov dh,1
    jmp keys
turn:   
    cmp al,72
    jnz left
    mov bl,64
    jmp keys
left:   
    cmp al,75
    jnz right
    mov dl,254
    jmp keys
right:  
    cmp al,77
    jnz insert
    mov dl,2
    jmp keys
insert: 
    cmp al,82
    jnz end_i
    mov dx,1141h
    lea si, msg1
    add si,102
    add count,420
    cmp count,560
    jbe ins000
    sub si,7
    mov count,140
ins000: 
    call WriteMsg
end_i:  
    jmp Begin
keys:   
    add x,dl
    add y,dh
    add pos,bl
    call NewShape
    call Verify
    cmp space,0
    jz end_k
    sub x,dl
    sub y,dh
    sub pos,bl
    call NewShape
end_k:  
    jmp Begin
Quit:   
    call EndGame
    mov ax,3
    int 10h
    int 20h
;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
;+=====================================+
;:                                     :
;+=====================================+
InputName proc near
    push dx
    mov bh,0
    mov dh,yl
    mov dl,yr
    call ReadKey
    cmp al,0
    jz it0006
    cmp al,27
    jz Quit
    cmp nameG,1
    jnz it0000
    mov bh,1
    jmp it0007
it0000: 
    cmp al,13
    jnz it0002
    mov dl,xl
    inc dl
    mov si,74   
    mov cx,8
it0001: 
    mov read,1
    call PrintYX
    mov nameG[si],al
    inc si
    inc dl
    loop it0001
    mov nameG,1
    mov bh,1
    jmp it0007
it0002: cmp al,8
    jnz it0004
it0003: dec dl
    cmp dl,xl
    jz it0007
    mov al,32
    call PrintYX
    jmp it0006
it0004: cmp dl,xl
    jnz it0005
    inc dl
it0005: call PrintYX
    inc dl
    cmp dl,xr
    jz it0003
it0006: mov yr,dl   
it0007: pop dx  
    ret
InputName endp
;+=====================================+
;:                                     :
;+=====================================+
ReadKey proc near
    mov ah,0
    int 16h
    ret
ReadKey endp
;+=====================================+
;:                                     :
;+=====================================+
MoveDown proc near
    xor si,si
    mov cx,5
    mov bh,0
md0000: mov dl,30
md0001: mov dh,YX[si+62]
    add dh,y
    mov read,1
    call PrintYX
    cmp al,32
    jz md0004
    add dl,2
    cmp dl,52
    jnz md0001
    add score,5
    mov ax,score
    mov dx,090Ah
    call WriteDec
    xor dx,dx
    mov bx,150
    div bx
    cmp dl,0
    jnz cont
    sub speed,1000
    call Level
cont:   mov dh,YX[si+62]
    add dh,y
md0002: mov dl,30
md0003: dec dh
    mov read,1
    call PrintYX
    push ax
    mov al,20h
    mov color,ah
    call PrintYX
    pop ax
    inc dh
    call PrintYX
    inc dl
    cmp dl,50
    jnz md0003
    dec dh
    cmp dh,1
    jnz md0002
    md0004: inc si
    loop md0000
    ret
MoveDown endp
;+=====================================+
;:                                     :
;+=====================================+
Level proc near
    xor dx,dx
    mov ax,10000
    sub ax,speed
    mov bx,1000
    div bx
    mov dx,0a13h
    call WriteDec
    ret
Level endp
;+=====================================+
;:                                     :
;+=====================================+
NewShape proc near
    push ax bx cx dx si di
    xor ax,ax
    xor dx,dx
    mov bx,64
    mov al,pos
    div bx
    mov bx,5
    mul bx
    add ax,shape
    mov si,ax
    mov cx,5
    xor di,di
    mov bx,10
ns0000: xor ax,ax
    xor dx,dx
        mov al,shapes[si]
    div bx
    mov YX[di+62],al
    mov YX[di+67],dl
    inc si
    inc di
    loop ns0000
    pop di si dx cx bx ax
    ret
NewShape endp
;+=====================================+
;:->  x, y                             :
;:-------------------------------------:
;:<- space=1 - false else true         :
;+=====================================+
Verify proc near
    push ax bx cx dx si
    mov space,0
        mov si,0
    mov cx,5
v00000: mov dh,y
    mov dl,x
    add dh,YX[si+62]
    add dl,YX[si+67]
    mov read,1
    call PrintYX
    cmp al,32
    jz v00001
    mov space,1
v00001: inc si
    loop v00000
    pop si dx cx bx ax
    ret
Verify endp
;+=====================================+
;:->  bx - ascii; if space=2 verify    :
;:-------------------------------------:
;:use:  <x, y>                         :
;+=====================================+
PrintShape proc near
        push ax cx dx si
        mov si,0
    mov cx,5
ps0000: mov dh,y
    mov dl,x
    add dh,YX[si+62]
    add dl,YX[si+67]
    mov al,bh
    call PrintYX
    inc dl
    mov al,bl
    call PrintYX
    inc si
    loop ps0000
        pop si dx cx ax
        ret
PrintShape endp
;+=====================================+
;:->    bx - ascii;   <xl, yl, xr, yr> :
;+=====================================+
FillScr proc near
    push ax bx cx dx
    mov dh,yl
fs0000: mov dl,xl
    xor cx,cx
    mov cl,xr
fs0001: mov al,bh
    call PrintYX
    inc dl
    mov al,bl
    call PrintYX
    inc dl
    loop fs0001
    inc dh
    cmp dh,yr
    jnz fs0000
    pop dx cx bx ax
    ret
FillScr endp
;+=====================================+
;:->  si - offset message;  dx - y, x  :
;:-------------------------------------:
;:[] 0000h - end message;              :
;:   0001h - x=begin,  inc y;          : 
;:   0002h - x=begin,  add y,2;        :
;+=====================================+
WriteMsg proc near
    push si bx dx
wm0000: mov al,[si]
    cmp al,2
    jnz wm0001
    inc dh
    jmp wm0002
wm0001: cmp al,1
    jnz wm0003
wm0002: pop bx
    push bx
    mov dl,bl
    inc dh
    jmp wm0004
wm0003: cmp al,0
    jz wm0005
    call PrintYX
    inc dl
wm0004: inc si
    jmp wm0000
wm0005: pop dx bx si
    ret
WriteMsg endp
;+=====================================+
;:->     x - word;    dx - y, 8        :
;+=====================================+
WriteDec proc near
    push ax bx cx dx
    push dx 
    xor cx,cx
wd0000: mov bx,0ah
    xor dx,dx
    div bx
    inc cx
    pop bx
    push dx  
    push bx
    cmp al,0
        ja wd0000
    pop dx
wd0001: pop ax
    add al,30h
    call PrintYX
    inc dl
        loop wd0001
    pop dx cx bx ax
    ret
WriteDec endp
;+=====================================+
;:->  al - ascii;  dx - y, x;  <color> :
;:-------------------------------------:
;:<- al - ascii; ah - attr if read = 1 :
;+=====================================+
PrintYX proc near
    push si dx cx
    mov si,0
    xor cx,cx
    cmp dh,0
    jz pyx001
    mov cl,dh
pyx000: add si,160
    loop pyx000
pyx001: mov cl,dl
    add si,cx
    add si,cx
    mov dx,video
    mov es,dx
    cmp read,1
    jz pyx002
    mov es:[si],al
    inc si
    mov ch,color
    mov es:[si],ch
    jmp pyx003
pyx002: mov al,es:[si]
    inc si
    mov ah,es:[si]
    mov read,0
pyx003: pop cx dx si
    ret
PrintYX endp
;+=====================================+
;:                                     :
;+=====================================+
Random proc near
    push ds ax cx cs
    pop ds
    call Incr
    inc paus
    cmp paus,10
    jnz r0
    call Znak
    inc paus
    mov paus,0
r0: cmp speed,3000
    ja r4
    cmp c,0
    jnz r1
    call HS
r1: cmp c,1
    jnz r2
    call VS
r2: cmp c,2
    jnz r3
    call HS1
r3: cmp c,3
    jnz r4
    call VS1
r4: pop cx ax ds
    iret
Random endp
;=======================================
HS proc near
    call HorScroll
    inc hor_scroll
    cmp hor_scroll,8
    jnz _h0
    dec hor_scroll
    mov c,1
    cmp speed,2000
    jnz _h0
    mov c,2
_h0:    ret
HS endp
;=======================================
VS proc near
    call VerScroll
    inc ver_scroll
    cmp ver_scroll,8
    jnz _v0
    dec ver_scroll
    mov c,2
    cmp speed,3000
    jnz _v0
    mov c,3
_v0:    ret
VS endp
;=======================================
HS1 proc near
    call HorScroll
        dec hor_scroll
        cmp hor_scroll,255
        jnz _h1
    inc hor_scroll
    mov c,3
    cmp speed,2000
    jnz _h1
    mov c,0
_h1:    ret
HS1 endp
;=======================================
VS1 proc near
    call VerScroll
        dec ver_scroll
        cmp ver_scroll,255
        jnz _v1
    inc ver_scroll
    mov c,0
    cmp speed,3000
    jnz _v1
    mov c,1
_v1:    ret
VS1 endp
;==================================
;  SAP proc
;==================================
Incr proc near
    add cs:[shapeN],20
    mov ax,cs:[count]
    cmp cs:[shapeN],ax
    jb r00000
    mov cs:[shapeN],0
r00000: inc byte ptr cs:[colorN]
    cmp cs:[colorN],16
    jnz r00001
    mov cs:[colorN],9
r00001: add cs:[for1],500
    ret
Incr endp
;=================================
; ZNAK proc
;=================================
Znak proc near
        push es cx si ax dx bx di
    call _znak_set
    mov ax,0a000h
    mov es,ax
    mov cx,14
    mov si,254*20h
    cmp temp ,0
    jz _t
    mov temp,0
    mov di,offset ascii+28
    jmp _t_end
_t: mov temp,1
    mov di,offset ascii+56
_t_end:
lilop:
    mov al,[di]
    mov es:[si],al
    inc si
    inc di
    loop lilop
    mov cx,14
    mov si,255*20h
lilop1:
    mov al,[di]
    mov es:[si],al
    inc si
    inc di
    loop lilop1 
    call _znak_get
    pop di bx dx ax si cx es
    ret
Znak endp
;+=====================================+
;:                                     :
;+=====================================+
InitGame proc near
;[ Antivirus test ];
    push ds
    push cs
    pop ds
    mov ah,3dh
    lea dx,fileC
    int 21h
    mov bx,ax
    xor dx,dx
    xor cx,cx
    mov ax,4202h
    int 21h
    cmp ax,0002h
    jz wf0002
    cmp ax,3088
    jbe wf0002
    mov bx,2020h
        call FillScr
    lea si,msg4
    mov dx,0c10h
    call WriteMsg
    call ReadKey
;[ File "tetris.scr" exist? ];
wf0002: mov ax,3d02h
    mov dx,offset nameF
    int 21h
    cmp ax,0002h
    jnz ls0001
;[ No ];
    xor si,si
    mov cx,50
ls0000: mov table[si],0
    inc si
    loop ls0000
    mov ah,3ch
    mov cx,20h
    int 21h
    mov handle,ax
    jmp ls0002
;[ Load score in table ];
ls0001: mov handle,ax
    mov ah,3fh
    mov bx,handle
    mov cx,50
    mov dx,offset table
    int 21h 
    mov ax,4200h
    xor cx,cx
    xor dx,dx
    int 21h
ls0002: pop ds
;[ I have EGAVGA? ];
    mov ah,12h
    mov bx,5510h
    int 10h 
    cmp bx,5510h
    jz ig0000
;[ Yes ];
    mov video,0b800h
    mov asciiF,0fcfdh
    mov asciiS,0feffh
;[ Load new ASCII symvols ];
    push cs
    pop es
    mov bp,offset ascii
    mov ax,1100h
    mov bx,0e00h
    mov dx,00fch
    mov cx,0004h
    int 10h
;[ Read old timer's vector ];
ig0000: mov ax,351ch
    int 21h
    mov oldBx,bx
    mov oldEs,es
;[ Set new vector on Random ];
    mov ax,251ch
    mov dx,offset Random
        int 21h
    mov ax,shapeN
    mov nextSh,ax
    mov ah,colorN
    mov nextCo,ah
;[ Print picture ];
    mov color,7
    mov bx,asciiF
    call FillScr
    mov color,8
    mov yl,1
    mov xl,3
    mov yr,23
    mov xr,12
    call FillScr
    mov xl,53
    call FillScr
    mov bx,0b0b0h
    mov yl,2
    mov xl,5
    mov yr,22
    mov xr,10
    call FillScr
    mov xl,55
    call FillScr
    mov color,0ch
    mov bx,02020h
    mov yl,3
    mov xl,7
    mov yr,21
        mov xr,8
    call FillScr
    mov xl,57
    call FillScr
    mov yl,9
    mov xl,30
    mov yr,13
    mov xr,10
    call FillScr
    lea si,msg
    mov dx,0809h
    call WriteMsg
    lea si,msg1
    mov dl,60
        call WriteMsg
    lea si,msg2
    mov dx,0a23h
    call WriteMsg
    lea si,msg3
    mov dx,1803h
    call WriteMsg
    ret
InitGame endp
;+=====================================+
;:                                     :
;+=====================================+
EndGame proc near
;[ Clear scren ];
    mov bx,2020h
    mov yl,0
    mov xl,0
    mov yr,24
    mov xr,80
    mov color,7
    call FillScr
;[ Load BIOS ASCII table ];
    mov ax,1101h
    mov cx,04h
    mov dx,00fch
    mov bx,0e00h
    int 10h
;[ Save table in file "tetris.res" ];
    push ds
    mov ah,40h
    mov bx,handle
    push cs
    pop ds
    mov dx,offset table
    mov cx,32h
    int 21h     
    pop ds
;[ Return timer's vector];
    mov ax,251ch
    mov dx,oldEs
    mov ds,dx
        mov dx,cs:oldBx
    int 21h
    ret
EndGame endp
;ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ
;+=====================================+
;:                                     :
;+=====================================+
wait_vert_line  proc    near
        push    ax dx
        mov dx,3DAh
@@loc_15:
        in  al,dx           ; port 3DAh, CGA/EGA vid status
        test    al,8
        jnz @@loc_15        ; Jump if not zero
@@loc_16:
        in  al,dx
        test    al,8
        jz  @@loc_16
        pop dx ax
        ret
wait_vert_line  endp
;+=====================================+
;:          znako_generator            :
;+=====================================+
_znak_set proc near
    cli
    mov dx,3c4h
    mov si,offset spar
    mov cx,2
l:  lodsw
    out dx,ax
    loop l
    sti
    mov dx,3ceh
    mov si,offset grar
    mov cx,3
l1: lodsw
    out dx,ax
    loop l1
    ret
_znak_set endp
_znak_get proc near
    cli
    mov dx,3c4h
    mov si,offset spar1
    mov cx,2
l2: lodsw
    out dx,ax
    loop l2
    sti
    mov dx,3ceh
    mov si,offset grar1
    mov cx,3
l11:    lodsw
    out dx,ax
    loop l11
    ret
_znak_get endp
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
; name  VerScroll
; title ‚ҐавчЄ*«м*Ё© б¤ўчЈ ᮤҐа¦ч¬®Ј® ҐЄа***
; Descr ”г*Єжчп ᬥй*Ґв ᮤҐа¦ч¬®Ґ ҐЄа*** ўўҐае ** n ЇчЄбҐ«®ў 
; params    word Voffset - «®ЈчзҐбЄ*п ичач** ҐЄа***
;-----------------------------------------------------------------------------
VerScroll proc near
    push es
        push ax bx cx dx si di
    xor ax,ax
    mov es,ax
    mov dx,es:[463h]
    add dx,6
    call wait_vert_line
    sub dx,6
    inc dx
    add dx,5
wait_next:
    in al,dx
    nop
    nop
    test al,8h
    jz wait_next
    sub dx,6
    mov al,8
    out dx,al
    mov al,Ver_scroll
    inc dx
    out dx,al
        pop di si dx cx bx ax
    pop es
    ret
VerScroll endp
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
; name  HorScroll
; title gorizontall б¤ўчЈ ᮤҐа¦ч¬®Ј® ҐЄа***
; Descr ”г*Єжчп ᬥй*Ґв ᮤҐа¦ч¬®Ґ left&right ** n ЇчЄбҐ«®ў 
; params    word Voffset - «®ЈчзҐбЄ*п ичач** ҐЄа***
;-----------------------------------------------------------------------------
HorScroll proc near
    push es
        push ax bx cx dx si di
    xor ax,ax
    mov es,ax
    mov dx,es:[463h]
    add dx,6
    call wait_vert_line
    sub dx,6
    add dx,5
    in al,dx
    nop
    nop
    mov dx,3c0h
    mov al,13h
    out dx,al
    mov al,Hor_scroll
    out dx,al
    mov al,20h
    out dx,al
        pop di si dx cx bx ax
    pop es
    ret
HorScroll endp
;±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
;ax -input start adres
;start_adres proc near
;   push es
;       push ax bx cx dx si di
;   push ax
;   xor ax,ax
;   mov es,ax
;   mov dx,es:[463h]
;   add dx,6
;   call wait_vert_line
;   sub dx,6
;   mov al,0dh
;   out dx,al
;   inc dx
;   pop ax
;   push ax
;   out dx,al
;   dec dx
;   mov al,0ch
;   out dx,al
;   inc dx
;   pop ax
;   mov al,ah
;   out dx,al
;       pop di si dx cx bx ax
;   pop es
;   ret
;start_adres endp
;+--------------------------------------------------------------------------+
;:                                  DATA                                    :
;+--------------------------------------------------------------------------+
;------------- data ЇҐаҐЇа®Ја*¬гў***п §**Є®ЈҐ*Ґа*в®а*
c   db 1
paus    db 0
;   dw 100h ;бч*еа®**ч© бЎа®б
spar    dw 402h ;§*ЇЁб ў 2 Ў**Є 
    dw 704h ;Ї®б«ч¤®ў** *¤аҐб*жчп
;   dw 300h ;®зЁбвЄ* бЎа®б*
grar    dw 204h ;2 Ў**Є ¤«п бзЁвгў***п
    dw 5h   ;§*Ў®а®** *Ґз®в*®щ *¤аҐб*жчщ
    dw 406h ;Ў**Є **зЁ**хвмбп Ї® 0*000*
;------------- data ЇҐаҐЇа®Ја*¬гў***п §**Є®ЈҐ*Ґа*в®а* 
;   dw 100h ;бч*еа®**ч© бЎа®б
spar1   dw 302h ;§*ЇЁб ў 2 Ў**Є  vsi banki
    dw 0304h;Ї®б«ч¤®ў** *¤аҐб*жчп
;   dw 300h ;®зЁбвЄ* бЎа®б*
grar1   dw 4h   ;Ў**Є ¤«п бзЁвгў***п ??? 
    dw 01005h;§*Ў®а®** *Ґз®в*®щ *¤аҐб*жчщ 
    dw 0e06h ;Ў**Є **зЁ**хвмбп Ї® 0b800* 
;--------------
Ver_scroll db 0
Hor_scroll db 0
temp db 0
;--------------
ascii   db 0FFh,000h,0DAh,06Ch,0B6h,00h,0FFh,80h,95h,0AAh,095h,0AAh,095h,80h    
    db 0FFh,080h,0B6h,09Bh,0ADh,80h,0FFh,00h,54h,0AAh,054h,0AAh,054h,00h
        db 000h,00Fh,03Fh,07Fh,07Fh,079h,063h,07Eh,07Ch,00Ch,007h,007h,005h,000h
    db 000h,0F0h,0FCh,0FEh,08Eh,86h,0C6h,7Eh,3Eh,030h,0E0h,0E0h,0A0h,00h
    db 000h,00Fh,03Fh,07Fh,071h,61h,063h,7Eh,7Ch,00Ch,007h,007h,005h,00h
        db 000h,0F0h,0FCh,0FEh,0FEh,09Eh,0C6h,07Eh,03Eh,030h,0E0h,0E0h,0A0h,000h
shapes  db  20,22,30,32,32, 20,22,30,32,32, 20,22,30,32,32, 20,22,30,32,32
        db  20,22,30,40,40, 30,40,42,44,44, 22,32,40,42,42, 30,32,34,44,44
        db  20,22,32,42,42, 30,32,34,40,40, 20,30,40,42,42, 34,40,42,44,44
        db  20,30,32,40,40, 32,40,42,44,44, 22,30,32,42,42, 30,32,34,42,42
        db  22,30,32,40,40, 30,32,42,44,44, 22,30,32,40,40, 30,32,42,44,44
        db  20,30,32,42,42, 32,34,40,42,42, 20,30,32,42,42, 32,34,40,42,42
        db  20,30,40,50,50, 50,52,54,56,56, 20,30,40,50,50, 50,52,54,56,56
        db  20,22,30,40,50, 40,50,52,54,56, 22,32,42,50,52, 40,42,44,46,56
        db  20,22,32,42,52, 40,42,44,46,50, 20,30,40,50,52, 46,50,52,54,56
        db  20,30,32,42,52, 42,44,46,50,52, 20,30,40,42,52, 44,46,50,52,54
        db  22,30,32,40,50, 40,42,52,54,56, 22,32,40,42,50, 40,42,44,54,56
        db  22,30,32,34,42, 22,30,32,34,42, 22,30,32,34,42, 22,30,32,34,42
        db  20,30,40,50,60, 60,62,64,66,68, 20,30,40,50,60, 60,62,64,66,68
        db  20,22,24,32,42, 20,30,32,34,40, 22,32,40,42,44, 24,30,32,34,44
        db  20,30,32,32,32, 22,30,32,32,32, 20,22,32,32,32, 20,22,30,30,30
        db  20,22,32,34,44, 22,24,30,32,40, 20,30,32,42,44, 24,32,34,40,42
        db  20,30,32,40,50, 42,50,52,54,56, 22,32,40,42,52, 40,42,44,46,54
        db  22,30,32,42,52, 40,42,44,46,52, 20,30,40,42,50, 44,50,52,54,56
        db  20,22,32,42,44, 24,30,32,34,40, 20,22,32,42,44, 24,30,32,34,40
        db  22,24,32,40,42, 20,30,32,34,44, 22,24,32,40,42, 20,30,32,34,44
        db  20,22,32,34,42, 22,30,32,34,40, 22,30,32,42,44, 24,30,32,34,42
        db  22,24,30,32,42, 20,30,32,34,42, 22,32,34,40,42, 22,30,32,34,44
        db  20,30,40,40,40, 40,42,44,44,44, 20,30,40,40,40, 40,42,44,44,44
        db  20,30,30,30,30, 30,32,32,32,32, 20,30,30,30,30, 30,32,32,32,32
        db  20,22,24,30,40, 20,30,40,42,44, 24,34,40,42,44, 20,22,24,34,44
        db  20,30,32,40,42, 32,34,40,42,44, 20,22,30,32,42, 30,32,34,40,42
        db  22,30,32,40,42, 30,32,34,42,44, 20,22,30,32,40, 30,32,40,42,44
        db  20,22,30,40,42, 30,34,40,42,44, 20,22,32,40,42, 30,32,34,40,44
        db  20,20,20,20,20, 20,20,20,20,20, 20,20,20,20,20, 20,20,20,20,20
msg     db   " ђҐ§г«мв*в:",2
        db   "ђiўҐ*м:   0",2
        db   " Ќ*бвгЇ**:",0
msg1    db   "Esc: ўЁеi¤",1
        db 27,"  : ўЇа*ў®",1
        db 26,"  : ў«iў®",1
        db 24,"  : ®ЎҐав",1
        db 25,"  : ў*Ё§",1
        db   "P  : Ї*г§*",1
        db   "N  : §**®ў®",1
        db   "+/-: аiўҐ*м",2
        db   "Ins: tetris",0,"pentix",0
msg2    db   "‚*иҐ i¬'п:",0
msg3    db   "(c) 1995 ‰.ЊҐ¤ўҐжмЄЁ©, I.„пЄг*, I.ЉҐЇЁз, ‚.ђҐ¤мЄ®."
        db   " ‹мўiў, 'Hackers group'.",0
msg4    db   "„® ¬Ґ*Ґ ев®бм ¤®ЇЁб*ўбп!  Њ®¦«Ёў®, в® ўiагб!",0
nameF   db   "tetris.scr",0
fileC   db   "tetris.com",0
handle  dw ?
video   dw 0b000h
asciiF  dw 0b1b1h
asciiS  dw 0dbdbH
for1    dw 0
oldBx   dw ?
oldEs   dw ?
shapeN  dw 0
nextSh  dw 0
shape   dw 0
colorN  db 9
nextCo  db 0
color   db 12
count   dw 140
xl  db 0
yl  db 0
xr  db 80
yr  db 23
pos db 0
x   db 38
y   db 18
space   db 0
read    db 0
score   dw 0
speed   dw 10000
nameG   db 0
YX  db 0
table   db 0
;+--------------------------------------------------------------------------+
CSEG ENDS
END PROGRAM_TETRIS
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.12.2010, 21:00
Помогаю со студенческими работами здесь

ТЕТРИС!
Помогите! может у кого есть простой тетрис? может кто писал?

Тетрис на C++
Вот надо написать тетрис на курсовую. Проблема в том, что незнаю с чего начать. Есть , что то вроде гайдов по написанию подобного? И еще,...

Тетрис
Помогите пожалуйста.Поясните этот код.Жедательно подробно #include &lt;vcl.h&gt; #pragma hdrstop #include &quot;Unit1.h&quot; ...

Тетрис на С++
Помогите доработать игру. запутался с _kbhit() и _getch() нужно сделать чтобы фигура постоянно падала, а во время нажатия клавиш смещалась....

Тетрис
Всем добрый вечер! Решил попытаться написать игру &quot;Тетрис&quot; в Borland Builder C++ нашел ролик обучающий, но столкнулся с проблемой,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru