Итальянский коммисар полиции


Главная / ЭКВМ / Программы для ЭКВМ / Игры

В 1991 году тульский автор Александр Михолап написал для МК-61/52 оригинальную игру "Итальянский комиссар полиции": http://lordbss.narod.ru/pmk230.html

Программа была опубликована в "Экспрессе" N10-12 (строенный) за 1991-й год.

Описание оригинальной игры

Игровая программа Александра Михолапа I.C.P.

Вы являетесь итальянским комиссаром полиции. Ваша задача - контроль телефонных номеров. Гангстеры с помощью компьютера, подключённого к сети, пытаются изменить номер своего телефона. Вы должны определить номер, который изменился, и сообщить оперативной группе - гангстеры будут пойманы, а Вы получите приличную награду.

Если же Вы неправильно указали изменившийся телефон - Вас арестовывают за якобы связь с мафией.

Игра для ЭКВМ

Программа I.C.P с сайта lordbbs некорректно работает на ЭКВМ, поскольку использует команды логических операций. В 2011 году paul-161 переписал программу.

Инструкция

С версии 1.1 игра может работать в одном из двух режимов:

  • Запуск 0 В/О С/П. Всё работает как и раньше, при ошибке игра заканчивается с обнулением счёта.
  • Запуск 1 В/О С/П. Игра хранит счет игрока в файле (десятичных данных ICP в головном каталоге внутреннего диска). Счет запоминается при выходе из игры, при удачном или неудачном ответе. В последнем случае счет не обнуляется, а теряет столько же очков, сколько мог получить при победе (т.е. ставку). Игра при этом не заканчивается, а может быть продолжена ответом "1". Возможен отрицательный счет (долг).

1. На дисплее - запрос числа номеров (от 1 до 9). Если ввести 0 - число выбирается случайно от 4 до 6.

2. Цифровыми клавишами выбирается номер для просмотра. В отличие от ПМК-версии, первая цифра может быть любой, не только 8.

Просмотр номеров

Запомнив номера, нажмите "Ввод". Потом снова просмотрите номера и, выбрав изменившийся (по Вашему мнению), снова нажмите "Ввод".

Просмотр изменённых номеров

3. При правильном ответе к счету прибавляется 10 в степени числа номеров (например, 100000 для 5) и ЭКВМ спрашивает, продолжить ли игру. Ответ "1"- да (переход к п.1), "0" - нет (выводится сообщение о конце игры и набранная сумма в RX. При неправильном ответе игра заканчивается и счет обнуляется.

Правильный ввод изменённого номера

Игра развивает память и внимание, не лишена и азарта (большое число номеров - риск ошибки, но и высокая награда).

Удачной борьбы с итальянской мафией!

Опубликовано: http://community.livejournal.com/mk_152/44654.html


Программа "Итальянский коммисар полиции" версия 1.1 от 10.01.12

Файл ICP11.mkp (657 байт, КС 66383/143)

  0 1 2 3 4 5 6 7 8 9
000 П 4 П E P x≠0 01 21 0 PP П 11 00 PP П
010 90 30 1 PP П 91 20 6 3 П 0 3
020 PP П 90 31 ИП 0 PP П 91 22 PP ИП 90 34
030 7 3 - P x=0 00 66 PP ИП 90 34 6
040 7 - P x=0 00 66 PP ИП 90 34 8 0
050 - P x=0 00 66 0 PP П 90 31 PP ИП 90
060 33 4 - P x≠0 01 11 PF L0 00 19 0
070 П E 3 PP П 90 31 7 3 PP П 90 34
080 6 7 PP П 90 34 8 0 PP П 90 34
090 1 7 П 0 3 2 PP П 90 34 PF L0 00
100 93 4 PP П 91 28 PP П 91 25 P БП 00
110 05 ИП 0 PP П 11 00 PP П 91 28 PP П 91
120 23 9 П 2 2 PP П 90 10 P ПП 05 35
130 0 B↑ 0 PP П 90 00 0 6 3 5
140 PP П 90 21 P ПП 04 54 1 0 - P x<0
150 01 43 ИП 0 П 2 P x=0 01 65 K СЧ 3 ×
160 4 + K [x] П 2 П 0 3 2 PP П 90 20
170 ИП 0 4 8 + PP П 90 20 9 9 9
180 П 6 P ПП 04 45 P ПП 04 45 4 5 K П 6
190 P ПП 04 45 P ПП 04 45 4 5 K П 6 P ПП
200 04 45 P ПП 04 45 0 K П 6 PF L0 01 81
210 1 6 B↑ 0 PP П 90 00 0 5 5
220 5 PP П 90 21 P ПП 04 54 P x≠0 02 24
230 3 3 - P x≠0 02 42 P ПП 04 81 P БП
240 02 24 3 2 B↑ 0 PP П 90 00 1
250 0 П 0 3 1 PP П 90 20 PF L0 02 52
260 3 2 B↑ 0 PP П 90 00 0 6 0
270 7 PP П 90 21 K СЧ ИП 2 9 × × K [x]
280 П 0 1 + 3 ÷ K {x} P x≠0 02 74 ИП 0
290 9 ÷ K [x] 1 + П 1 ИП 0 9 9 9
300 + П 6 K СЧ 1 0 × K [x] 4 8 +
310 K П 6 P ПП 04 54 P x≠0 03 11 3 3 -
320 P x≠0 03 31 ИП 0 П 3 P ПП 04 81 P БП 03
330 11 ИП 3 ИП 1 - P x≠0 03 83 ИП 4 P x=0 03
340 54 0 6 2 3 PP П 90 26 0 П E
350 B↑ B↑ B↑ С/П 1 PP П 90 47 ИП E ИП 2
360 F 10x - П E P ПП 05 35 4 8 B↑ 0
370 PP П 90 00 0 5 9 0 PP П 90 21
380 P БП 04 09 1 PP П 90 47 ИП 2 F 10x ИП E
390 + П E P ПП 05 35 4 8 B↑ 0 PP П
400 90 00 0 5 7 1 PP П 90 21 P ПП
410 04 54 P x=0 01 21 0 6 2 3 PP П
420 90 26 ИП 4 P x≠0 04 38 PP ИП 11 00 P x≠0
430 04 38 PP П 91 28 PP П 91 26 K ЭКР 0
440 B↑ B↑ B↑ ИП E С/П K СЧ 1 0 × 4
450 8 + K П 6 В/О K ГРФ PP ИП 90 29 B↑ K NOT
460 P x≠0 04 55 F O П 0 3 3 - P x≠0 04
470 79 ИП 0 ИП 2 1 + - P x<0 04 55 ИП 0
480 В/О 3 2 B↑ 0 PP П 90 00 ИП 0 4
490 8 + PP П 90 20 5 8 PP П 90 20
500 3 2 PP П 90 20 ИП 0 1 - 9 ×
510 1 0 0 0 + PP П 90 22 3 1
520 PP П 90 20 3 1 PP П 90 20 3 1
530 PP П 90 20 K ГРФ В/О 5 6 B↑ 0 PP П
540 90 00 0 6 5 0 PP П 90 21 ИП E
550 PP П 90 23 K ГРФ В/О 82h 'В' 9Bh 'Ы' 81h 'Б' 85h 'Е' 90h 'Р'
560 88h 'И' 92h 'Т' 85h 'Е' 20h ' ' 8Dh 'Н' 8Eh 'О' 8Ch 'М' 85h 'Е' 90h 'Р' 3Ah ':'
570 00h 82h 'В' 85h 'Е' 90h 'Р' 8Dh 'Н' 8Eh 'О' 21h '!' 20h ' ' 8Fh 'П' 90h 'Р'
580 8Eh 'О' 84h 'Д' 8Eh 'О' 8Bh 'Л' 86h 'Ж' 88h 'И' 92h 'Т' 9Ch 'Ь' 3Fh '?' 00h
590 8Eh 'О' 98h 'Ш' 88h 'И' 81h 'Б' 8Ah 'К' 80h 'А' 21h '!' 20h ' ' 85h 'Е' 99h 'Щ'
600 85h 'Е' 20h ' ' 90h 'Р' 80h 'А' 87h 'З' 3Fh '?' 00h 96h 'Ц' A8h 'и' E4h 'ф'
610 E0h 'р' A0h 'а' 20h ' ' A8h 'и' A7h 'з' ACh 'м' A5h 'е' ADh 'н' A5h 'е' ADh 'н'
620 A0h 'а' 2Eh '.' 00h 8Ah 'К' 8Eh 'О' 8Dh 'Н' 85h 'Е' 96h 'Ц' 20h ' ' 88h 'И'
630 83h 'Г' 90h 'Р' 9Bh 'Ы' 2Eh '.' 00h 97h 'Ч' 88h 'И' 91h 'С' 8Bh 'Л' 8Eh 'О'
640 20h ' ' 8Dh 'Н' 8Eh 'О' 8Ch 'М' 85h 'Е' 90h 'Р' 8Eh 'О' 82h 'В' 3Fh '?' 00h
650 91h 'С' 97h 'Ч' 85h 'Е' 92h 'Т' 3Ah ':' 20h ' ' 00h      

Исходный текст для кросс-компилятора

Файл ICP11.mkl

; Итальянский комиссар полиции
; Версия 1.1, 10.01.12

; Регистры:
; 0 - счетчик
; 1 - загаданный номер регистра
; 2 - сложность (число номеров)
; 3 - выбранный номер регистра
; 4 - режим игры
; E - счет
; 1000-1080 - знаки телефонов (по 9 на номер)
; 1100 - номер строки каталога с файлом данных

; Чтение регистров из файла
	M 4
	M E
	P X!=0 BEGIN
FIND_FILE:
	0
	PP M 1100
	PP M 9030
	1 PP M 9120
	63 M 0
READ_DIR:
	3 PP M 9031
	RM 0
	PP M 9122
	PP RM 9034
	73 -
	P X=0 NEXT_ROW
	PP RM 9034
	67 -
	P X=0 NEXT_ROW
	PP RM 9034
	80 -
	P X=0 NEXT_ROW
	0 PP M 9031
	PP RM 9033
	4 -
 	P X!=0 FILE_FOUND
NEXT_ROW:
	PF L0 READ_DIR
	0 M E
	3 PP M 9031
	73
	PP M 9034
	67
	PP M 9034
	80
	PP M 9034
	17 M 0
FILL_NAME:
	32
	PP M 9034
	PF L0 FILL_NAME
	4
	PP M 9128
	PP M 9125
	P GOTO FIND_FILE
FILE_FOUND:	
	RM 0
	PP M 1100
	PP M 9128
	PP M 9123
BEGIN:
	9 M 2
	2 PP M 9010
	P GSB SHOW_RES
	0 ENT 0
	PP M 9000
	.NUM MESS5
	PP M 9021
WAIT0:
	P GSB GET_KEY
; Создание номеров
	10 -
	P X<0 WAIT0
	RM 0
	M 2
	P X=0 SET_NUM
; Случайное число номеров
	K RAN
	3 *
	4 +
	K INT
	M 2
	M 0
SET_NUM:
	32
	PP M 9020
	RM 0
	48 +
	PP M 9020
	999 M 6
GEN1:
	P GSB DIGIT
	P GSB DIGIT
	45 
	K M 6
	P GSB DIGIT
	P GSB DIGIT
	45 
	K M 6
	P GSB DIGIT
	P GSB DIGIT
	0
	K M 6
	PF L0 GEN1
	16 ENT 0
	PP M 9000
	.NUM MESS0
	PP M 9021
WAIT1:
	P GSB GET_KEY
	P X!=0 WAIT1
	33 -
	P X!=0 ENTER1
	P GSB SHOW_NUM
	P GOTO WAIT1
ENTER1:
	32 ENT 0
	PP M 9000
	10 M 0
CLEAR:
	31
	PP M 9020
	PF L0 CLEAR
	32 ENT 0
	PP M 9000
	.NUM MESS3
	PP M 9021
SEL_DIG:
	K RAN
	RM 2
	9 *
	*
	K INT
	M 0
	1 +
	3 /
	K FRAC
	P X!=0 SEL_DIG	
	RM 0
	9 /
	K INT
	1 +
	M 1
	RM 0
	999 +
	M 6
	K RAN
	10 *
	K INT
	48 +
	K M 6
WAIT2:
	P GSB GET_KEY
	P X!=0 WAIT2
	33 -
	P X!=0 ENTER2
	RM 0
	M 3
	P GSB SHOW_NUM
	P GOTO WAIT2
ENTER2:
	RM 3
	RM 1
	-
	P X!=0 NOT_LOSE
	RM 4
	P X=0 VER1
	.NUM MESS4
	PP M 9026
	0
	M E
	ENT
	ENT
	ENT
	R/S
VER1:
	1
	PP M 9047
	RM E
	RM 2
	F 10^X
	-
	M E		
	P GSB SHOW_RES
	48 ENT 0
	PP M 9000
	.NUM MESS2
	PP M 9021
 	P GOTO TEST_END
NOT_LOSE:
	1
	PP M 9047
	RM 2
	F 10^X
	RM E
	+
	M E		
	P GSB SHOW_RES
	48 ENT 0
	PP M 9000
	.NUM MESS1
	PP M 9021
TEST_END:
	P GSB GET_KEY
	P X=0 BEGIN
	.NUM MESS4
	PP M 9026
; Конец игры
END:
; Сохранение регистров (счета) в файл
	RM 4
	P X!=0 NO_SAVE
	PP RM 1100
	P X!=0 NO_SAVE
	PP M 9128
	PP M 9126
NO_SAVE:
	K SCR
	0
	ENT
	ENT
	ENT
	RM E
	R/S

; Генерация разряда номера
DIGIT:
	K RAN
	10 *
	48 +
	K M 6
	RTN

; Ввод номера
GET_KEY:
	K GRPH
TEST_KEY:
	PP RM 9029
	ENT
	K NOT	
	P X!=0 TEST_KEY
	F R
	M 0
	33 -
	P X!=0 ENT_KEY
	RM 0
	RM 2
	1 +
	-
	P X<0 TEST_KEY
ENT_KEY:
	RM 0
	RTN

; Показ выбранного номера
SHOW_NUM:
	32 ENT 0
	PP M 9000
	RM 0
	48 +
	PP M 9020
	58
	PP M 9020
	32
	PP M 9020
	RM 0
	1 -
	9 *
	1000 +
	PP M 9022
	31
	PP M 9020
	31
	PP M 9020
	31
	PP M 9020
	K GRPH
	RTN

; Показ счета
SHOW_RES:
	56 ENT 0
	PP M 9000
	.NUM MESS6
	PP M 9021
	RM E
	PP M 9023
	K GRPH
	RTN

MESS0:
.TEXT "ВЫБЕРИТЕ НОМЕР:\0"
MESS1:
.TEXT "ВЕРНО! ПРОДОЛЖИТЬ?\0"
MESS2:
.TEXT "ОШИБКА! ЕЩЕ РАЗ?\0"
MESS3:
.TEXT "Цифра изменена.\0"
MESS4:
.TEXT "КОНЕЦ ИГРЫ.\0"
MESS5:
.TEXT "ЧИСЛО НОМЕРОВ?\0"
MESS6:
.TEXT "СЧЕТ: \0"

.END


НПП "СЕМИКО" (383) 271-01-25 (многоканальный)