Игра "Двигалка" на Апогей/РК
Всем добрый день!
Написал игру для РК-совместимых компьютеров - Двигалка.
Написал её еще весной, но выложить сюда только сейчас руки дошли. В игре надо перемещая различные предметы сначала взять ключ (+), потом дойти до выхода (Яблочко).
Игра написана на PL/M, исходники вместе с компилятором находятся в архиве. Приятной игры!
Видео
https://www.youtube.com/watch?v=NV6zwZXSOCg
Скачать: http://events.retroscene.org/files/m...d/dvigalka.zip
Пишите программы для РК на PL/M
Цитата:
Сообщение от mvg
А я своих марсиан никак не допишу...
А это как раз потому, что на ассемблере программировать сложнее. Я уже предлагал всем программистам для РК86 переходить с ассемблера на PL/M, который из всех ЯВУ даёт самый эффективный код.
Программа написанная на PL/M всего лишь в 1.2...1.5 раза тормознее и объёмнее, чем аналог написанный на ассемблере. А Гарри Килдэлл, автор PL/M, вообще утверждал, что большая программа написанная на PL/M эффективнее, чем программа на ассемблере. Теоретически такое невозможно, но в реальности программисты выдают на ассемблере менее эффективный код, в их коде встречаются дублирующиеся фрагменты, да и при разработке на ЯВУ структура и алгоритм программы получается более оптимальной.
А улучшенный PL/M, т.е PLMX с оптимизацией кода, ещё более эффективен. В отличие от PL/M из 1973 года от Гарри Килдэлла, PLMX устраняет мелкие неудобства PL/M (например, не зависит от регистра символов), допускает многомодульность, объединение с кусками написанными на других ЯВУ или ассемблере и имеет поддержку BDOS функций CP/M. Кроме того, он даёт на выходе сразу ассемблерный исходник, пригодный для трансляции и линковки, а не кучу каких-то левых файлов, не пойми для чего предназначенных, как делает оригинал PL/M из 1973 года.
Но самое главное в том, что PLMX работает в CP/M (хотя не работает под TSR эмуляторами CP/M для MSDOS, типа 22NICE, RUNCPM). Достаточно использовать любой эмулятор в котором есть CP/M c достаточным уровнем TPA. Можно также транслировать на реальном ОРИОНЕ с дисководом или винчестером (на РК86 и СПЕЦИАЛИСТЕ не получится, там TPA слишком маленький).
Но оригинальной версии компилятора PL/M для CP/M до сих пор нет. Много людей пытались найти такой компилятор (в т.числе и иностранцы). Фирма Intell не перетранслировала компилятор PL/M для CP/M, чтобы не поддерживать конкурентов. Но компилятор PL/M для CP/M всё же был создан другой сторонней фирмой и, естественно, это не был оригинал от Гарри Килдэлла. Упоминания об этом встречал на англоязычных сайтах и даже ссылки на скачку (но они протухли более 10 лет назад). Вроде бы это написала фирма Tarbell, ставшая известной своим Tarbell Basic для CP/M.
Недавно оригинальные исходники PL/M на Фортране-IV были опубликованы. Но остаётся проблемой странслировать эти имеющиеся исходники PL/M. Нужен компилятор фортрана, что даёт на выходе код КР580 или Z80 для CP/M. Пока безрезультатно опробовал 3 компилятора фортрана для CP/M. А интелловский компилятор PL/M для ISIS не работает в Windows, т.к эмулятор ISIS написан для MSDOS. Исходя из дат файлов, чтобы его использовать надо загрузиться в MSDOS 3.30 и компилировать на дискете или на партиции размером не более 32 мб.
Итак, уже имеются две возможности писать на PL/M - это PLMX от Эммануля Роше и MSDOS кросс компилятор PL/M с предпроцессором на LUA от Kakos nonos-а. Последний, к сожалению, пока непонятно как переделать, чтобы транслировал не в формат RKA, а в формат RKS (понятно, лишние байты я забил, но как поменять порядок байтов в начальном, конечном адресе и КС, - неизвестно).
Конечно удобно, что кусок на ассемблере встраивается прямо в PL/M код (это же делает и PLMX), но никакие имеющиеся исходники программ на PL/M не компилируются. Стандарт PL/M предусматривает наличие точки с запятой после оператора. Если это убрано (видимо подставляет препроцессор), то в одной строке д.быть всего один оператор.
Кроме того, неудобно использовать TASM вместо нормального макроассемблера от Microsoft. С TASM непонятно как вставлять ассемблерные куски написанные в понятных мнемониках Z80. M80 позволяет, используя ключ .Z80 или .6502, вставлять куски в мнемониках Z80 или 6502. Возможно и TASM позволяет оперативно менять мнемоники в самом исходнике, но это неизвестно.
Мне кажется, что компилятор PLMX из 1980 более выгоден, чем компилятор PL/M из 1973 года. Хорошо бы провести сравнение генерируемого кода двух компиляторов и решить, что лучше. Мне PLMX нравится больше, т.к без введения своих процедур сразу позволяет писать для CP/M, что удобнее. А главное, можно прилинковывать свои процедуры странслированные любым ассемблером, а не быть привязанным к убогому TASM, использующему моторолловские соглашения.
Кстати, так и не понял, когда программисты всего мира собираются начать сбор денег на строительство памятника Гарри Килдэллу.