Giter Site home page Giter Site logo

rc2014z80 / rc2014 Goto Github PK

View Code? Open in Web Editor NEW
306.0 61.0 42.0 197.83 MB

Official RC2014 repository for hardware schematics / software and more!

Makefile 0.26% C 12.57% Assembly 83.06% Python 0.63% Batchfile 0.01% C++ 0.59% BASIC 2.77% FreeBasic 0.10%

rc2014's Introduction

RC2014

Official RC2014 repository for hardware schematics / software and more!

New to the RC2014

Want to get started with Assembly and C programming, but don't have a EEPROM burner? Then use the hexload Basic program to upload your work.

Contributing and installation notes

This repository links to third party projects and code written for RC2014 (for instance pigfx, some emulators, etc) as git submodules. To initialize them properly, run the following command (from the repository root) after cloning:

$ git submodule update --init

Feel free to contribute by forking this repository and issuing a pull request. If you already have a consolidated project already versioned in a git repo you can request to be included as a git submodule.

Have fun and happy hacking :)

rc2014's People

Contributors

bleullama avatar car007 avatar cpswan avatar fbergama avatar feilipu avatar foxweb avatar mattybigback avatar mchobby avatar mfurtak avatar rfc2795 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  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  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

rc2014's Issues

Update pigfx to resolve broken nested submodule

It looks like rsta2/uspi rewrote their history or force-pushed something they shouldn't at some point and now the pigfx submodule is broken. Repo currently submodules fbergama/pigfx@afcfc39
which in turn submodules rsta2/uspi@7344968 even though that commit no longer exists.

error: no such remote ref 6620411c61332b468939baa2ecca61496b0b99f8
Fetched in submodule path 'uspi', but it did not contain 6620411c61332b468939baa2ecca61496b0b99f8. Direct fetching of that commit failed.

Issue was reported upstream in fbergama/pigfx#1 and submodule was updated and merged into master at fbergama/pigfx@ca52ea1.

Only just bought my RC2014 and still finishing the soldering and getting to grips with the code, so I don't know what else in this repo could be impacted by updating from upstream. There have only been 3 commits since the version currently referenced, but I don't know what they might break. One of them is the fix referenced above, another is fixing an escape key bugfix, but the earliest one is updating uspi to a newer version.

If someone with more Z80 experience and a working toolchain please look at this and update the submodule to either master or fbergama/pigfx/issue_1_fix?

intrinsic l_ret

Just noted that the 8085 classic library doesn't provide l_ret with pop hl instructions prior. So I added one.
This is needed by asm_strset an used with jp Z,l_ret - 1.

Following up for z80 it seems that two different kinds of l_ret are provided. One in the page 0 code without the prior pop hl instructions, and one in the library with these pop instructions.

Grepping through the libraries, there are many locations where the pop hl instructions are expected, so the page 0 implementations are bad. Don't know why there hasn't been an issue from this?

$ rgrep -I l_ret | grep "l_ret -"
libsrc/_DEVELOPMENT/compress/zx7/z80/asm_dzx7_agile_rcs.asm:        jp      c, l_ret - 1
libsrc/_DEVELOPMENT/compress/zx7/z80/asm_dzx7_agile_rcs_back.asm:        jp      c, l_ret - 1
libsrc/_DEVELOPMENT/compress/zx7/z80/asm_dzx7_mega.asm:        jp      c, l_ret - 1
libsrc/_DEVELOPMENT/compress/zx7/z80/asm_dzx7_mega.asm:        jp      c, l_ret - 1
libsrc/_DEVELOPMENT/compress/zx7/z80/asm_dzx7_mega_back.asm:        jp      c, l_ret - 1
libsrc/_DEVELOPMENT/compress/zx7/z80/asm_dzx7_mega_back.asm:        jp      c, l_ret - 1
libsrc/_DEVELOPMENT/compress/zx7/z80/asm_dzx7_smart_rcs.asm:        jp      c, l_ret - 1
libsrc/_DEVELOPMENT/compress/zx7/z80/asm_dzx7_smart_rcs_back.asm:        jp      c, l_ret - 1
libsrc/_DEVELOPMENT/compress/zx7/z80/asm_dzx7_standard.asm:        jp      c, l_ret - 1
libsrc/_DEVELOPMENT/compress/zx7/z80/asm_dzx7_standard_back.asm:        jp      c, l_ret - 1
libsrc/_DEVELOPMENT/compress/zx7/z80/asm_dzx7_turbo.asm:        jp      c, l_ret - 1
libsrc/_DEVELOPMENT/compress/zx7/z80/asm_dzx7_turbo_back.asm:        jp      c, l_ret - 1
libsrc/_DEVELOPMENT/compress/zx7/z80/asm_sms_dzx7_standard_vram.asm:        jp      c, l_ret - 1
libsrc/_DEVELOPMENT/compress/zx7/z80/asm_sms_dzx7_standard_vram_unsafe.asm:        jp      c, l_ret - 1
libsrc/_DEVELOPMENT/drivers/tty/state/asm_tty_state_0.asm:   jp c, l_ret - 1             ; if printable char
libsrc/_DEVELOPMENT/stdio/z80/asm_fread_unlocked.asm:   jp z, l_ret - 1             ; if all records read, return success, hl = nmemb
libsrc/_DEVELOPMENT/string/z80/asm_strset.asm:   jp Z,l_ret - 1
libsrc/_DEVELOPMENT/target/zxn/startup/zxn_crt_768.asm.m4:   jp c, l_ret - 3             ; if read error
libsrc/_DEVELOPMENT/target/zxn/startup/zxn_crt_768.asm.m4:   jp nz, l_ret - 3            ; if full amount not read
libsrc/_DEVELOPMENT/target/zxn/startup/zxn_crt_769.asm.m4:   jp c, l_ret - 3             ; if read error
libsrc/_DEVELOPMENT/target/zxn/startup/zxn_crt_769.asm.m4:   jp nz, l_ret - 3            ; if full amount not read
libsrc/_DEVELOPMENT/target/zxn/startup/zxn_crt_772.asm.m4:   jp c, l_ret - 3             ; if read error
libsrc/_DEVELOPMENT/target/zxn/startup/zxn_crt_772.asm.m4:   jp nz, l_ret - 3            ; if full amount not read
libsrc/_DEVELOPMENT/target/zxn/startup/zxn_crt_773.asm.m4:   jp c, l_ret - 3             ; if read error
libsrc/_DEVELOPMENT/target/zxn/startup/zxn_crt_773.asm.m4:   jp nz, l_ret - 3            ; if full amount not read
libsrc/_DEVELOPMENT/target/zxn/startup/zxn_crt_776.asm.m4:   jp c, l_ret - 3             ; if read error
libsrc/_DEVELOPMENT/target/zxn/startup/zxn_crt_776.asm.m4:   jp nz, l_ret - 3            ; if full amount not read
libsrc/_DEVELOPMENT/target/zxn/startup/zxn_crt_777.asm.m4:   jp c, l_ret - 3             ; if read error
libsrc/_DEVELOPMENT/target/zxn/startup/zxn_crt_777.asm.m4:   jp nz, l_ret - 3            ; if full amount not read
libsrc/_DEVELOPMENT/target/zxn/startup/zxn_crt_784.asm.m4:   jp c, l_ret - 3             ; if read error
libsrc/_DEVELOPMENT/target/zxn/startup/zxn_crt_784.asm.m4:   jp nz, l_ret - 3            ; if full amount not read
libsrc/_DEVELOPMENT/target/zxn/startup/zxn_crt_788.asm.m4:   jp c, l_ret - 3             ; if read error
libsrc/_DEVELOPMENT/target/zxn/startup/zxn_crt_788.asm.m4:   jp nz, l_ret - 3            ; if full amount not read
libsrc/_DEVELOPMENT/target/zxn/startup/zxn_crt_792.asm.m4:   jp c, l_ret - 3             ; if read error
libsrc/_DEVELOPMENT/target/zxn/startup/zxn_crt_792.asm.m4:   jp nz, l_ret - 3            ; if full amount not read
libsrc/_DEVELOPMENT/target/zxn/startup/zxn_crt_798.asm.m4:   jp c, l_ret - 3             ; if read error
libsrc/_DEVELOPMENT/target/zxn/startup/zxn_crt_798.asm.m4:   jp nz, l_ret - 3            ; if full amount not read
libsrc/_DEVELOPMENT/target/zxn/startup/zxn_crt_799.asm.m4:   jp c, l_ret - 3             ; if read error
libsrc/_DEVELOPMENT/target/zxn/startup/zxn_crt_799.asm.m4:   jp nz, l_ret - 3            ; if full amount not read
libsrc/_DEVELOPMENT/env/esxdos/z80/asm_env_getenv.asm:   jp z, l_ret - 2             ; if valsz == 0 return length of value string
libsrc/_DEVELOPMENT/env/esxdos/z80/asm_env_tmpnam.asm:   jp c, l_ret - 2             ; if open failed exit with hl = template
libsrc/compress/zx7/asm_dzx7_mega.asm:        jp      c, l_ret - 1
libsrc/compress/zx7/asm_dzx7_mega.asm:        jp      c, l_ret - 1
libsrc/compress/zx7/asm_dzx7_mega_back.asm:        jp      c, l_ret - 1
libsrc/compress/zx7/asm_dzx7_mega_back.asm:        jp      c, l_ret - 1
libsrc/compress/zx7/asm_dzx7_standard.asm:        jp      c, l_ret - 1
libsrc/compress/zx7/asm_dzx7_standard_back.asm:        jp      c, l_ret - 1
libsrc/compress/zx7/asm_dzx7_turbo.asm:        jp      c, l_ret - 1
libsrc/compress/zx7/asm_dzx7_turbo_back.asm:        jp      c, l_ret - 1
libsrc/compress/zx7/asm_dzx7_agile_rcs.asm:        jp      c, l_ret - 1
libsrc/compress/zx7/asm_dzx7_agile_rcs_back.asm:        jp      c, l_ret - 1
libsrc/compress/zx7/asm_dzx7_smart_rcs.asm:        jp      c, l_ret - 1
libsrc/compress/zx7/asm_dzx7_smart_rcs_back.asm:        jp      c, l_ret - 1

I think the page zero l_ret should not be PUBLIC for 8085, z80, z180, and zxn.

I'll delete it from the 8085 page 0 implementation.
But seeking comment before extending this further...

mandelbrot

The mandelbrot basic program nexts a print statement between the last two next statements

Suitable for automated benchmark execution?

Hello, I am looking for an SBC that can be easily programmed from a host system and interface with that host system via a serial connection. This should not require any mechanic interaction (i.e. no plugging / unplugging / EPROM insertion, etc).

Basically, I want to use it as one can use modern development boards for microcontrollers.

Will this work with the RC2014? If yes, is where can I find the relevant documentation? I've had a look at https://github.com/RC2014Z80/RC2014/tree/master/BASIC-Programs/hexload but it looks as if I still have to press the reset button each time to load a new program (which is a problem when I want to load and execute hundreds of programs in sequence).

Background: The SDCC compiler has various backends. To track code size and performance regressions, benchmarks are compiled with new SDCC revisions and executed on STM8 and MCS-51 boards (resulting in the graphs at https://sourceforge.net/p/sdcc/code/HEAD/tree/trunk/sdcc-extra/historygraphs/).

However, currently no z80-related port is tested that way (despite Z80/GameBoy/Z180 retrocomputing being an important use case for SDCC). So I'm looking for a well-documented SBC that uses a Z80 or related to close that gap.

Unknown identifier

Hi,

when trying to compile, I get this "unknown identifier" message from the z80asm.
Any idea why?

[tobias@tobias-arch ROMs]$ ls
helloworld/  hexload/  init/  init_ram/  pigfx/  snake/  TinyBasicPlus/  buildrules.mk  buildrules_ram.mk  config.mk  Makefile  README.md
[tobias@tobias-arch ROMs]$ make
make -C hexload/
make[1]: Verzeichnis „/home/tobias/Entwicklung/z80/RC2014/ROMs/hexload“ wird betreten
z80asm -l -b hexload.asm
Error at file 'hexload.asm' line 1: Unknown identifier
Error at file 'hexload.asm' line 2: Unknown identifier
2 errors occurred during assembly
make[1]: *** [Makefile:7: hexload.bin] Fehler 1
make[1]: Verzeichnis „/home/tobias/Entwicklung/z80/RC2014/ROMs/hexload“ wird verlassen
make: *** [Makefile:3: all] Fehler 2

So long,
Tobias

Bad 24886009.BIN

File ROMs/Factory/24886009.BIN is bad rom image, it have error in 2nd byte. it is 0x00 there but it should be 0xC3. Can also be spotted by comparing 24006000.BIN and this file
Due to this it is impossible to use 32K basic. After I have changed this and wrote new eprom all is working as expected.

Unable to open list file "hexload.lst"

I follow that instruction https://github.com/RC2014Z80/RC2014/tree/master/ROMs to compile ROMs folder.
but it doesn't compile and there is no any file 'hexload.lst' in the corresponding directory.

c:\RC2014-master\ROMs>make
make -C hexload/
make[1]: Entering directory 'c:/RC2014-master/ROMs/hexload'
zcc +z80 --no-crt -v -m @hexload.lst -o hexload
Unable to open list file "hexload.lst"
Makefile:7: recipe for target 'hexload__.bin' failed
make[1]: *** [hexload__.bin] Error 1
make[1]: Leaving directory 'c:/RC2014-master/ROMs/hexload'
Makefile:3: recipe for target 'all' failed
make: *** [all] Error 2

c:\RC2014-master\ROMs\hexload>dir
Volume in drive C has no label.
Volume Serial Number is E884-E259

Directory of c:\RC2014-master\ROMs\hexload

13.12.2017 23:16

.
13.12.2017 23:16 ..
23.11.2017 04:19 1 990 bin2bas.py
23.11.2017 04:19 354 bin2bas2.py
23.11.2017 04:19 3 001 hexload.asm
23.11.2017 04:19 1 963 hexload.bas
23.11.2017 04:19 426 hexload_map.asm
23.11.2017 04:19 266 Makefile
23.11.2017 04:19 299 slowprint.py
7 File(s) 8 299 bytes
2 Dir(s) 15 975 227 392 bytes free

Super Startrek

Just got the basic rom image running on my breadboard Z80. The Nascom basic seems to have a hard line length limit of 72 characters. There are a number of lines in the Startrek programme that are longer than this so they get truncated. I've just started looking at the code and trying to remember my Basic from 30 years ago.

Before I was too much time, is this a real problem or am I seeing something weird on my setup?

Building under Linux

How can I build the HexLoadr ROM under Arch Linux? I have yasm, nasm, and z88dk, but tasm seems to be DOS/Windows only.

Timer? Interrupt?

Is there an obvious way to measure how much time has passed? Having a quick look at documentation I noticed no timers in the design and no regular interrupt that could be used to implement a timer in software either.
What's the preferred way to do this on the RC2014, to e.g. implement the C clock() function?

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.