davidgiven / cpmish Goto Github PK
View Code? Open in Web Editor NEWAn open source sort-of CP/M 2.2 distribution.
Home Page: http://cowlark.com/cpmish
License: Other
An open source sort-of CP/M 2.2 distribution.
Home Page: http://cowlark.com/cpmish
License: Other
There is a different CPM variant that run on the NC100, which is basically able to run via function-X keypress from a ram card. Would be possible to do the same on cpmish so you can bypass the floppy altogether and run everything from the PCMCIA 32 mb card? This would also save the hassle to boot from floppy and then swap system disk to the PCMCIA card and have improved speed.
Hi,
We are trying to get debuggers to work. Both DDT and SID/ZSID crash the machine hard. Z8E (i don't know this application, really) also fails. I try to learn about CP/M, and the use of debuggers is a big part of the journey. Thanks!
Dennis
dd
does not accept the status=none
parameter on macOS. This causes the build to fail.
I get to here, and the build fails:
[1/83] gcc -c -o .obj/third_party/zmac/zmac/main/y.tab/y.tab.o .obj/third_party/zmac/zmacparser/y.tab.c -I.obj/third_party/zmac/zmacparser -g -Og -Ithird_party/zmac
FAILED: .obj/third_party/zmac/zmac/main/y.tab/y.tab.o
gcc -c -o .obj/third_party/zmac/zmac/main/y.tab/y.tab.o .obj/third_party/zmac/zmacparser/y.tab.c -I.obj/third_party/zmac/zmacparser -g -Og -Ithird_party/zmac
third_party/zmac/zmac.y:1902:7: error: use of undeclared identifier 'UNDECLARED'
case UNDECLARED: case WASEQUATED:
^
third_party/zmac/zmac.y:1902:24: error: use of undeclared identifier 'WASEQUATED'
case UNDECLARED: case WASEQUATED:
^
third_party/zmac/zmac.y:1903:23: error: use of undeclared identifier 'WASEQUATED'
if (sym->i_token == WASEQUATED &&
^
<more errors snipped>
I've had issues recently with yacc (when building Fuzix). I've also installed byacc, and edited yacc.lua to use byacc instead, but that doesn't seem to affect the problem. Many thanks in advance for any pointers!
Currently the OS is not able to read any floppy formatted with the NC200, once cpmish is booted.
Since there is no way to use the serial port; there is no way to copy files from and to the cpmish environment. Would be great to add support to the standard NC200 floppy format (which should be readable on a standard pc), or add support for file systems that can be created via 22disk (a utility very commonly used by CP/M users to copy files from and to a CP/M environment). Thanks
When run on an emulator such as RunCPM or SIMH, BBC BASIC hangs when you attempt to RUN a program. The problem is that it's using the R (memory refresh register) as a random number seed, and emulators apparently just return 0 for this register instead of incrementing it like a real CPU does. In your sources, it will loop indefinitely as long as R is 0 so it will never run the program.
RUN0: LD SP,(HIMEM) ;PREPARE FOR RUN
LD IX,RANDOM
RAND: LD A,R ;RANDOMISE (CARE!)
JR Z,RAND
RLCA
RLCA
LD (IX+3),A
SBC A,A
LD (IX+4),A
I disassembled the official BBC BASIC Z80 binary and it is doing this slightly different. It still initializes the random seed form R but if it's zero, it just increments it to 1 and moves on.
l0ee1h:
ld sp,(03de4h) ;0ee1 ed 7b e4 3d . { . =
ld ix,03df6h ;0ee5 dd 21 f6 3d . ! . =
ld a,r ;0ee9 ed 5f . _
jr nz,l0eeeh ;0eeb 20 01 .
inc a ;0eed 3c <
l0eeeh:
rlca ;0eee 07 .
rlca ;0eef 07 .
ld (ix+003h),a ;0ef0 dd 77 03 . w .
sbc a,a ;0ef3 9f .
ld (ix+004h),a ;0ef4 dd 77 04 . w .
I am going to fix this in my fork of BBC BASIC and I thought you may want to do the same.
I guess the sources R.T. Russell gave you don't exactly match the official binary. Another difference is between your patch.z80 file and the BBCDIST.MAC file distributed with the official binary. The timer code you had to comment out in your version doesn't exist in the BBCDIST.MAC file, and there are other minor differences.
BTW, my fork is available here: https://github.com/jblang/bbcbasic-z80. I have modified it to assemble with z88dk's z80asm. I plan to eventually add support for my TMS9918A video card: https://github.com/jblang/TMS9918A/
If you enter "insert" mode by typing "i", then immediately exit it again by pressing ESC, the document is still marked as dirty.
It should only be marked if actual changes are done.
Maybe something like this (untested):
--- qe.c 2020-06-03 12:44:51.806623700 +0200
+++ qe-fixed.c 2020-06-03 12:47:23.393445200 +0200
@@ -632,7 +632,10 @@
uint16_t c = cpm_bios_conin();
if (c == 27)
break;
- else if (c == 8)
+
+ dirty = true;
+
+ if (c == 8)
{
if (gap_start != current_line)
gap_start--;
@@ -654,8 +657,6 @@
redraw_current_line();
}
-
- dirty = true;
}
void insert_text(uint16_t count)
I have no linux machine with a floppy, so I cannot do the dd step of the img posted here. Is there a pre-made image that I can just put on a floppy, using something like balena etcher or similar tools, on Windows?
I could use a VM with a usb floppy drive but windows is quite picky about how floppy drive works even under emulation, and I have no old machine that can run linux and has a USB floppy; so I was wondering if there is another way to put the image on a real floppy without use linux?
https://github.com/MiguelVis/RetroProjects
That is the URL of a lot of Z80 C material for the CP/M environment.
Several I use/have that being te, small editor, MESCC a very good K&R C that can compile it self on a z80 system, ZSM assembler, a unix like shell, and some utilities like unix cat.
All of it GPL-V2. Keeping it both source (also binaries) and available for use.
I've had much of it for since forever and did a look to see if its current status had changed.
It had not and there was more if anything added. I have updated my library to add the new material.
MESCC is a branch of the SmallC compiler and is very good K&R style compiler.
There maybe a preference for ANSI but I use K&R style for small projects, its the
form I know from using unix V6 on PDP-11 way back when. It also seems to like
the code from here ( fewer minor edits)..
In open_below(), the call to open_above() should pass in the count
variable instead of 1
.
void open_below(uint16_t count)
{
cursor_down(1);
// open_above(1);
open_above(count);
}
Hey David, I know it's a pain, but is there any chance of getting a release folder with the images already built? I've struggled to get the code to compile.
Banking has been one of the devils of CP/M for the various levels to 2.2. This is mostly due
to there not being any standard. CP/M3 (aka CP/M+) and MPM made it desirable but not any specific form is called out.
It is possible to run CP/M 2 and ZS/ZRdos in banked systems as there are no prohibitions but generalized solutions of one size fits some are hard to come by due to wide variations in hardware.
The PCW is one I have seen this side of the pond (scarce but not rare) and likely easier to find as
well making it a good choice for implementation.
The most common applications of banking for any system is that bulky uses of memory
like video buffers, ramdisk, and large disk buffers can be outside the nominal 64K map
leaving as much space as possible for applications. General use is putting much of the
BIOS as possible in banked space.
Here in the USA the NC200 is a collector item as they are actually rare. Really looks slick.
PX-8s are more common as I have three.
Kaypros tend to be more often the second version of the KII vs K2 and very often 4.84 flavor or enhanced with Advent turbo rom. The KII is have sorta boots the disk but the files are scrambled
so its a Bios version thing.
Real hardware z80 boxes include Z100 based
Compupro with Z80 and their disk controller
CCS Z80 with their disk controller
Northstar horizon chassis Z80 with my disk controller 765 based.
Also monoboard SBCs:
SB180
AmproLB+
Outlanders:
DEC vt180 with CPm z80 card.
Grant Searle Z80 with IDE (CF) also CP/M
YAZC yet another Z280 computer.
Not much as stands that behaves well with the
existing kit. piecemeal if the -compiler is sorted will.
However the C versions of code may present disk space issues
as they will be much larger.
I've an NC200 and I've swapped out the floppy for a gotek device, so now it reads .img files from USB drives.
Unfortunately it doesn't like the nc200.img, and thinks it's completely empty. Command Q does not work when that is the disk selected on the gotek.
I was wondering if you had a similar device and had tried to get this working on it? For me the alternative is to build tools and create my own .img file, which is fine. But it would be good to know if this has been tried :-)
Would it be possible to rename BUILD to something that does not overlap with build/ to be able to clone on mac?
Even the term "CP/M" is copyrighted as well as trademarked.
Not unlike "Xerox copy" has become lexicon in english its sitll property of Xerox corporation.
So all copies of docs and listed must have a note of attribution of the work and trademarks of DRI.
Is there a way to boot cpmish on a PCMCIA 32 mb card without a floppy or SRAM card?
My NC200 has a dead floppy and could not find a ram card for less than 200 USD; so I was hoping there is a way to bootstrap cpmish as you do with the floppy disk, like using the onboard basic or a command via serial port?
If so, how would that be possible? Thanks
It seems that there are some different labelings in the arch and suse linux distributions causing errors apon making.
Please do something to gain more compatibility with those distributions.
[1/28] .obj/arch/nc200/utils/fontconvert/fontconvert .obj/...x7font.png > .obj/arch/nc200/supervisor/font_inc/font.inc
FAILED: .obj/arch/nc200/supervisor/font_inc/font.inc
.obj/arch/nc200/utils/fontconvert/fontconvert .obj/utils/6x7font/6x7font.png > .obj/arch/nc200/supervisor/font_inc/font.inc
error: image must be a multiple of 6 pixels across
[2/28] .obj/arch/brotherop2/utils/fontconvert/fontconvert ...font/6x7font.png > .obj/arch/brotherop2/font_inc/font.inc
FAILED: .obj/arch/brotherop2/font_inc/font.inc
.obj/arch/brotherop2/utils/fontconvert/fontconvert .obj/utils/6x7font/6x7font.png > .obj/arch/brotherop2/font_inc/font.inc
error: image must be a multiple of 6 pixels across
[3/28] .obj/arch/wp2450ds/utils/fontconvert/fontconvert .o...x7font/6x7font.png > .obj/arch/wp2450ds/font_inc/font.inc
FAILED: .obj/arch/wp2450ds/font_inc/font.inc
.obj/arch/wp2450ds/utils/fontconvert/fontconvert .obj/utils/6x7font/6x7font.png > .obj/arch/wp2450ds/font_inc/font.inc
error: image must be a multiple of 6 pixels across
[4/28] .obj/utils/objectifyc/objectifyc < .obj/utils/emu/b...bdos.cim > .obj/utils/emu/biosbdos_cim_h/biosbdos_cim_h.h
ninja: build stopped: subcommand failed.
Just wondering if there is any plan for the TRS-80 model 100; which is running a compatible 8080 CPU.
I've tried BDS-C and SmallC and tons of error complaining of format and structure and libs.
HitechTec C and Aztec C are pending.
Likely can compile on the PC using SDCC but that far from native.
The last remaining piece of the core system.
I did find te, which is GPL: http://texteditors.org/cgi-bin/wiki.pl?Te
However, it currently won't build with the ACK because the ACK's stdio library doesn't work with CP/M.
I tried to boot cpmish on my NC200 and just got a message saying "Preparing memory." in a centralised box on the NC screen. The disk drive motor stays on and the machine power button no longer works... I assume it's crashed.
I created a boot disk on Linux (USB disk drive) using:
ufiformat -f 720 /dev/sda
dd if=nc200.img of=/dev/sda
I've tried the image in the current github distribution. I also managed (after some hacking) to build the image (on Raspbian). Both images have the same results.
Any ideas?
Many thanks,
Frank.
...causing the builds to fail. I have no idea why. It doesn't do it on my development machine and it's valgrind clean.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.