GithubHelp home page GithubHelp logo

ytmytm / c64-geos2000 Goto Github PK

View Code? Open in Web Editor NEW
50.0 11.0 15.0 111 KB

GEOS KERNAL v2.0 - commented source code for GEOS 2.0 C64 with cleanups and optimizations

License: Other

Makefile 1.69% Assembly 15.60% C++ 30.94% Batchfile 0.22% HTML 39.69% Pascal 1.19% NASL 10.68%

c64-geos2000's Introduction

GEOS KERNAL v2.0 - commented source code

by Maciej 'YTM/Elysium' Witkowiak 6-6-99, 18-8-99, 18/29-2-2000, 2014

DESCRIPTION

This archive contains FULL source code of GEOS KERNAL v2.0, english version. It is identical to original in critical points but the code is revised, optimized, reorganized and first steps towards modularizing are made.

DISCLAIMER

This package comes from full disassembling of GEOS KERNAL. I did it for my own pleasure and purposes in my spare time. It is meant for customizing the code and not for making big bucks on it. If you want to use GEOS KERNAL generated from these sources you need to have an original copy of GEOS, because you can do nothing without DeskTop, applications and so.

Although I have throughly tested it I cannot guarantee that it will work on any hardware configuration and with any applications.

REQUIREMENTS

The only tool required is ACME (version at least 0.07). It may be obtained from: http://sourceforge.net/projects/acme-crossass/ Bash shell is helpful and existance of c1541 from VICE package will be good too. You will probably want to have pucrunch from https://github.com/mist64/pucrunch Base distribution of these sources is intended for UNIX systems, but ACME in DOS will do too. To compile the kernel simply do

make

It will work flawlessly if you have c1541 and pucrunch. Anyway if you only have ACME make will stop after assembling the system and you will have geoskernal.bin file ready for loading into c64 and SYS $5000.

CUSTOMIZATION

Look into inc/equ.inc file - there are many true/false defines, you are free to change them. But read the comments. You can compile-in input and disk drivers so right after boot you will have your drivers (and you can boot from 1571/81 without any problems). In case that input driver is compiled into KERNAL you have to delete all input driver files from boot disk, because DeskTop will try to load the first one overriding compiled driver. If you have C128 it is worth to enable 2MHz support - CPU is warped into 2MHz on the border. This is better than add-on that I saw somewhere, because my version will not flicker anytime and that add-on will not work with this kernal. (not a single application that modifies GEOS KERNAL directly will not work).

*NIX INSTALL

Use Makefile for creating a binary file and a disk image with it. It will be placed on top of the source tree. 'geoskern.bin' is the binary file 'geoskern.puc' is the crunched binary (just RUN it) 'geosboot.d64' is the disk image

If you don't have pucrunch simply move geoskernal.bin to c64 disk and treat it with any squeezer/cruncher. Even charpackers will be good. Let's say that you have crunched the KERNAL and saved the file as GEOS.PRG. From now on you can boot the system by simply loading and RUNning this file.

To make a new boot disk: Prepare a blank disk, copy DeskTop, auto-execs (Configure etc.) there, your input driver (if it is different than that compiled into KERNAL), printer driver and whatever you want. Oops, I would have forget - of course copy your packed KERNAL there also.

*NIX CLEAN

make clean

will remove all output files from the source tree.

MS-DOS INSTALL

Execute MAKEGEOS.BAT file, it will try to assemble the whole thing. I don't have pucrunch for DOS, so you will have uncompressed output file - geoskern.bin. Move it to a disk (image) and compress on c64 or execute - start and load address is $5000 - e.g.

LOAD "GEOSKERN.BIN",8,1
SYS20480

THE SOURCES

Source code is organized in a specific way. You can browse through it easier by using some keypoints:

1) Labels

All global labels are identical to those from geosSym and geosMac files. All OS_JUMPTAB functions are preceded with '_'. For example EnterDeskTop is placed in jumptab as:

EnterDeskTop		JMP _EnterDeskTop
(...)
_EnterDeskTOp		; code for handling this function

All other labels are meant to descript the purpose of a subroutine. It was not always possible, so you may find some UNK_xxx, xxxHelp_xx and lots of procedures with the same name but different number e.g. Font11, Font12 etc. In current version all labels are global and these which should be local are made by abbreviation of the subroutine with a number on its end. In future releases it will be fixed and named ACME !zone(s) will be used.

2) Indentation

This goes like that:

		[tab2]				[tab6]
Label		LDA #0				;$xxxx

CPU opcodes are always on 1st or 2nd tab. If it is 1st tab position, it means that the purpose of current/called subroutine/memory location is unknown. Comments are always on 6th tab position. The source is full of ;$xxxx comments. It is relict from disassembling the KERNAL - those marks helped me a lot when debugging. Currently the values there are wrong because code is optimized and reorganized. They will be removed in future releases.

SOURCE TREE

./bin - all binary files goes there ./inc - all include files ./src - all source files

subdirectories of ./bin and ./src ./drv - disk drivers code/binary ./input - input drivers code/binary

Description of sources can be found at top of each file.

COMMENTS

Well, the sources are not yet commented very much, but the labels are very descriptive (as for me anyway). You should obtain the GEOS Programmer's Reference Book (by Alexander Boyce) for full description of all jumptab functions and many GEOS data structures. This document is available in text and HTML format from ftp.funet.fi/pub/cbm/[somewhere...] ftp.elysium.pl/tools/systems/geos/docs [or /programming]

AUTHOR

And reverse-engineer :} Maciej Witkowiak [email protected]

END WORDS

Have fun!

c64-geos2000's People

Contributors

ytmytm 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

c64-geos2000's Issues

Couple of compilation issues..

Great work! But for anyone else, version 0.96.4 of ACME seems to be the last version of the assembler for Linux. Sourceforge doesnt have this version in its repo anymore unless Im missing something. Had to search around on github to find 96.4.

Also, due to this version change, !pseudopc / !realpc has been altered. In drv1541.tas, change line 967 to:

!pseudopc DriveAddy {
...

then change line 1373 (originally with !realpc) to :

}

One of the changes what to block !pseudopc with brackets, eliminating the need for !realpc. I suspect this is the case in the other drives as well but i havent tried them yet.

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.