Code Monkey home page Code Monkey logo

ishkurcpm's Introduction

Ishkur CP/M

An open source, modular CP/M distribution for the NABU computer. It is designed to work with both cloud based and local storage options. It is still very much a work in progress.

One of the core design ideas behind Ishkur is device modularity. Unlike standard CP/M, devices in Ishkur CP/M are self-contained. The only file that needs to be modified in order to add, remove, or reconfigure device drivers is config.asm. This makes spinning up a custom distribution that matches a target machine's hardware capabilities very easy. The hope is that this will facilitate support for a wide range of custom hobbyist hardware and software projects.

Progress

As of updating this file. The NHACP-based system is nominally functional on real hardware. The FDC-based system works both in emulator and on hardware. Right now, the system is fairly bare-bones. However, the following features are included:

  • Emulated VDP terminal with ADM-3A escape code support
  • 80 column screen scrolling
  • F18A 80 column mode
  • Multi-directory submit files
  • PROFILE.SUB auto execution at startup
  • Full support for SSDD floppy disks on the FDC
  • Ability to access virtual disks over a NHACP connection
  • Direct file access over a NHACP connection
  • Modified IOBYTE device redirection
  • NABU printer support
  • NABU serial option card support

Near-term goals include printer support, serial card support, and console redirection over NHACP, and maybe NABU-IDE support.

Platform Distributions

NABU FDC

Fairly self-explanatory. This is your classic CP/M operational environment. This allows the NABU to run completely disconnected from adapter software. Assuming the boot ROM is correct, this ishkur_fdc_ssdd.img disk image will self boot and contain a minimal set of CP/M software.

In order to modify or create a new disk image, cpmtools can be used. The disk format being used for this device is the osborne1 diskdef. This also means that this distribution is capable of reading and writing from genuine Osborne 1 disk images. This is a fairly common disk format, so it can allow the NABU to act as a data transfer intermediate between a modern computer and older CP/M machines.

NHACP NDSK

This distribution boots up from a NHACP-based network disk image. This image is treated as a normal drive by CP/M, and therefore contains a full CP/M 2.2 file system. The capacity of this emulated drive is 8MB, so there is plenty of space for programs and data. The disk format being used for this device is the nshd8 diskdef.

It should be noted that the virtual disk image must be at least 8196 bytes long, or else it will result in read errors.

In order to boot NDSK from NHACP, the following files must be setup from the Output_NDSK directory:

  1. Output/FONT.GRB must be moved to the NHACP root directory
  2. NDSK_CPM22.SYS must be renamed to CPM22.SYS and moved to the NHACP root directory
  3. NDSK_DEFAULT.IMG must be renamed to NDSK_A.IMG and moved to the NHACP root directory
  4. NDSK_BOOT.nabu must be renamed to 000001.nabu and moved to your adapter homebrew directory

NHACP NDSK + FDC (Hybrid)

This build works exactly like the standard NHACP NDSK build, but has added support for the floppy drives. Logical drives C: and D: are mapped to floppy drive 0 and 1 respectively.

NHACP NFS

Similar to the NDSK distribution in that it functions over NHACP. However, it does not utilize a virtual disk image, and instead accesses remote file systems directly. This works by intercepting BDOS calls directly instead of servicing BIOS calls like a standard CP/M driver. However, NFS is still able to work alongside more traditional storage drivers by only intercepting calls that pertain to it.

Under NFS, each logical drive and user number combination corresponds to a different folder on the host system. The logical device will be converted to a letter A-P, and the user number will be converted to hexadecimal 0-F. For example, device 0 with user 0 will convert to the directory A0/. For most distribution, CP/M drives are mapped 1-1 with similarly named folders on the host system.

In order to boot NFS from NHACP, the following files must be setup from the Output/Nabu_NFS directory:

  1. Output/FONT.GRB must be moved to A0/ in the NHACP root directory
  2. Optionally, all files in the Directory folder should be moved into A0/ to give you some software to run on boot
  3. NDSK_CPM22.SYS must be renamed to CPM22.SYS and moved to A0/ in the NHACP root directory
  4. NFS_BOOT.nabu must be renamed to 000001.nabu and moved to your adapter homebrew directory

NFS NDSK + FDC (Hybrid)

Similar to NDSK hybrid. Logical drives C: and D: are mapped to floppy drive 0 and 1 respectively.

Building

Windows

In order to build on Windows, ensure the following programs are installed:

  • Python3

After that, go into the Scripts directory and run build.bat. This will take care of all assembly and boot image creation.

UNIX-likes

There is currently no pre-built shell script to build Ishkur. This will hopefully change soon.

ishkurcpm's People

Contributors

tergav17 avatar brijohn avatar thorpej avatar

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.