GithubHelp home page GithubHelp logo

sblendorio / gorilla-cpm Goto Github PK

View Code? Open in Web Editor NEW
60.0 7.0 4.0 888 KB

GORILLA.BAS port to CP/M in Turbo Modula-2. Supported terminals: VT52, VT100, ANSI, ADM-31, KayPro, C128, Memotech monochrome, CPC / Zenith Z19

License: GNU General Public License v2.0

Modula-2 100.00%
cpm modula-2 artillery terminal-game 8bit terminal vt100 adm31 commodore-128 msx

gorilla-cpm's Introduction

Gorilla.BAS - CP/M version

This is a Modula-2 (despite the name) implementation for CP/M of the classic "GORILLA.BAS" BASIC game included in MS-DOS 5.0.

Why Turbo Modula-2?

The choice was mainly due to a historic interest: this compiler (never distributed by Borland) was written by Martin Odersky (the inventor of Scala language) and had never been used by a critical mass of users. So it was both a challenging choice and a historic research.

Contents of package

  • source - Source code in Turbo Modula-2 (despite the name ".BAS")
    • xterm.def - XTerm Library: definition module (for terminal portability)
    • xterm.mod - XTerm Library: implementation module
    • game.def - Game Engine: definition module
    • game.mod - Game Engine: implementation module
    • main.mod - Main module (run this)
  • binary - Compiled .COM executable files for CP/M-80
  • dists - Collection of CP/M bootable disk images for Commodore 128 and Memotech MTX
    • gorilla.d71 - Includes C128 CP/M boot code, all sources and binaries, some utilities
    • gorilla.d64 - Includes C128 CP/M boot code, all sources and binaries
    • gorilla.mfloppy - Includes Memotech MTX CP/M boot code and binaries (Memotech type 07 disk image)
    • gorilla-msx.dsk - Includes MSX-DOS boot code and binaries (MSX-DOS disk image)
    • gorilla-cpc.dsk - Includes CP/M for Amstrad CPC6128 boot code and binaries (CPC CP/M disk image)

Credits

Thanks to Fabrizio Radica for the idea, YAZE Team for the fantastic Z80 emulator that runs fine on Mac OS X, Lawrence Woodman for sharing informations about CP/M and Turbo Modula-2, Dave Stevenson for sharing informations about Memotech MTX and to Sergio Gervasini and Stefania Calcagno for support.

In-game screen on Commodore 128

C128

Intro screen on Amstrad CPC 128

CPC6128

Multiple platforms: C128 / Amstrad CPC6128

Multiple platforms

Intro screen

C128 version

Game screen - 1

C128 version

Game screen - 2

C128 version

External links

https://git.imzadi.de/acn/vt100-games

gorilla-cpm's People

Contributors

sblendorio avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

gorilla-cpm's Issues

Error to compile gorilla-cpm

I've tried to compile Gorilla using Turbo Modula-2 and both in YAZE and MSX-DOS (by OpenMSX) I've received the same kind of error:

>C
Compile file: main           
Imported: XTerm
FROM XTerm IMPORT SEQ,ESCAPE,AskTermType,ResetTerm,
                  ^   Error in Identifier:
XTerm.SYM not found

So I've tried to compile XTerm first but it still didn't find XTERM.SYM.

>C
Workfile name: xterm
FROM Strings IMPORT CAPS,Length;
^   Error in Identifier:
XTERM.SYM not found

There is a specific sequence to compile it?

Conflicting Video Attribute Codes

I have found some conflicting tables on how the ADM-31 codes are implemented across platforms, the original ADM-31 decodes the char after the G as a bitfield:

0: Blanking or Underlining, depending on a DIP switch
1: Blinking
2: Reverse
3: Graphics

But the C128s implementation that you use in your game uses completly different codes that aren't decodable into a bitfield.
Maybe you could make a distinction between a real ADM-31 and the C128s implementation of one?

Attached for reference are the real terminals codes and (sorry, only found it in German from the book "C128 - Alles über CP/M 3") the C128s implementation.

ADM 31 Users Manual:
Bildschirmfoto vom 2024-06-21 10-00-28

C128 - Alles über CP/M 3:
Bildschirmfoto vom 2024-06-21 10-01-05

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.