Git Product home page Git Product logo

kermit-80's Introduction

kermit-80

An off-shoot of kermit-80 from Columbia University

Building

The subdirectory 'm80' contains a Makefile for build using M80/L80 and a CP/M emulator "vcpm". See https://github.com/durgadas311/cpnet-z80 for more information on obtaining and setting up "vcpm".

Currently, the only build targets are:

target description
cpsker.hex Kermit system-independent module
cpvgen.hex Generic CP/M (iobyte)
cpvkpr.hex Kaypro
cpvh89.hex Heath/Zenith 89

The plan is to add more as needed.

This build environment aims to avoid the need to manually edit cpxtyp.asm for each build performed. The consequences of that are 'sed' scripts to modify the variables in cpxtyp.asm for each target.

This "vcpm" setup requires that M80.COM and L80.COM be present on the A: drive (directory). Those should be easily obtained from various sources on the internet.

To build targets, "cd" to the 'm80' subdirectory and run "make target". Because the building is done using CP/M commands, errors cannot be detected automatically. You will need to examine the output to ensure all went well.

Bugfixes are also being applied as they are found.

Build Requirements

Building requires the 'vcpm', with M80, and 'unix2dos' commands.

'unix2dos' is normally part of the "dos2unix" package on most Linux distributions.

'vcpm' is obtained and setup as described in https://github.com/durgadas311/cpnet-z80. M80 (MicroSoft MACRO-80 Assembler and Linker) is required to be installed in the virtual A: drive of 'vcpm' (rather, one of the drives configured in the search path). One source for this package is https://www.cpm80.com/.

kermit-80's People

Contributors

durgadas311 avatar

Stargazers

 avatar Jeffrey H. Johnson avatar Bocke avatar

Watchers

James Cloos avatar  avatar

Forkers

ravn sijnstra

kermit-80's Issues

Bug in generic 'sysspd' routine - benign?

The 'sysspd' routine in cpxsy2.asm, in the case of dumb terminal, has no return instruction and this falls-through (is the same as) 'sysprt'. It would be undesirable if kermit ever called 'sysspd' in this case, however 'spdtbl' is NULL (0) and that should prevent kermit from ever calling 'sysspd'. It just looks odd for "jmp sysspd" and "jmp sysprt" to be referencing the same routine/address.

Probably no fix required/warranted, but this would probably be:

diff --git a/cpxsy2.asm b/cpxsy2.asm
index cbe65f9..7403fc5 100644
--- a/cpxsy2.asm
+++ b/cpxsy2.asm
@@ -470,6 +470,11 @@ IF hp125                   ;[MF]
 spdtbl  equ     0               ; SET BAUD not supported.
 sphtbl  equ     0
 ENDIF;hp125 [MF]
+
+; BUG: in iobyte case, sysspd was falling through to sysprt
+IF iobyt
+        ret                    ; no baud control for iobyt
+ENDIF;iobyt
 ;
 ;^L       This is the system-dependent SET PORT command.
 ;       HL contains the argument from the command table.

Bug setting up BIOS call for LST: status

There is a bug in cpxcom.asm in 'iniadr', when the LST: status entry is computed and stored in 'bprtst'. The address should actually be stored in 'bprtst+1' to avoid wiping out the JMP op code and causing unpredictable consequences whenever 'bprtst' is called.

The fix is:

diff --git a/cpxcom.asm b/cpxcom.asm
index 7c3034e..566104c 100644
--- a/cpxcom.asm
+++ b/cpxcom.asm
@@ -121,7 +121,7 @@ iniadr:     lhld    1               ;get BIOS Warmstart-address
        shld    blsout+1
        lxi     d,10*3          ; get printer status routine
        dad     d
-       shld    bprtst
+       shld    bprtst+1        ; BUG: was trashing bprtst JMP
        ret                     ;And return
 
 bconst:        jmp     $-$             ;Call BIOS directly (filled in by iniadr)

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.