GithubHelp home page GithubHelp logo

mega65 / mega65-user-guide Goto Github PK

View Code? Open in Web Editor NEW
73.0 73.0 49.0 272.93 MB

MEGA65 User Guide

Makefile 0.65% TeX 93.65% C 5.09% Shell 0.10% sed 0.02% COBOL 0.04% Perl 0.01% Lasso 0.04% Hack 0.01% ASL 0.04% Boogie 0.02% C++ 0.03% Pyret 0.04% Python 0.27%

mega65-user-guide's People

Contributors

akira-hojo avatar dansanderson avatar deftmega avatar dpan avatar edilbert avatar everslick avatar gardners avatar georgrottensteiner avatar gurcei avatar impakt avatar isedwards avatar jimnicholls avatar johnwayner avatar ki-bo avatar lydon42 avatar mauricemega65 avatar mindrail avatar mlund avatar mteufel avatar nobruinfo avatar piramania avatar redt3ster avatar rscottfree avatar sausagejohnson avatar steph72 avatar stevencombs avatar titanlab avatar wiebow avatar woepaul avatar zendar 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mega65-user-guide's Issues

Default font

Most proportional fonts provide glyphs in equal width for the digits 0 -> 9.
This makes it easy to align numbers.
The default font in this user guide however has equal widths for all digits but '1', which is narrower than all other digits. This spoils the layout on many pages, even the content pages look awkward with their badly aligned page numbers.
I recommend to switch to a font with digits of equal width.

Addition of an Appendix for Binary, Decimal and Hexadecimal

I would like to add a section on binary, decimal and hexadecimal as another Appendix.
(This was originally described under Sprites in the C64 user manual 2nd edition but I think that because it is of general application it should go in the appendix.)

This would include:

  • Description of why numbers are used in the first place
  • Overview of binary, decimal and hexadecimal
  • How to convert between each
  • Bitwise logical operations, what they mean, what they do and how to set and clear bits

Optionally, I would like to include a type-and-run interactive BASIC 10 program that does numeric conversions for the user. (It would also do conversion on a range of numbers.) Also I think that a reference table that lists numbers between 0-255 in decimal, binary and hexadecimal would be very useful.

I've gotten a head-start on these things already, but I though I'd better raise an issue for comment. Do people think that this would be useful to include? If so, I'll be happy to do it.

Invalid UTF-8 byte

This is not an important issue, but an interesting one (at least for me :-)

The file "userguide.log" shows 135 lines with this error message:
Invalid UTF-8 byte or sequence at line nnn replaced by U+FFFD.

I located the source of these error messages in the file "xstring.tex".
/opt/local/share/texmf-texlive/tex/generic/xstring/xstring.tex

This file was created by Christian Tellechea, who used french characters in
his comments, which are coded in Latin1, not in UTF8.
One could expect, that this should not be regarded as an error, because all of
these characters are in comments, but LaTeX prints these errors.

I contacted Christian Tellechea and asked him, if he knows a solution
(hoping he would convert his file to UTF8). He replied, that he was aware of this
problem, but would neither convert his file nor renounce using french characters.

I tried to silence the warnings using the {silence} package, but this is unsuitable
in the phase, where the packages, like {xstring} are read in.

Well, this is less important, but I tried to reduce the messages in the log file,
so that the important error messages are easier to locate.
Maybe someone of you has an idea?

Basic statements XOR(arg1, arg2) and MOD(arg1, arg2)

Just looked through the BASIC 10 Command Reference in the user guide.

XOR statement write-up is missing.
So PRINT(XOR(128,64)) should output a result of 192, say. (toggles the bits)

Also, I think that the statement MOD (for modulo arithmetic) is undocumented (i,e, it's not in the system manual) but it is implemented.
So PRINT(MOD(128,64)) should output a result of 57, say.

Do we want to include write-ups of these statements too?

Key symbol sizes

In the cursor keys section, the line spacing between paragraphs is uneven, based on whether key symbols are present on the line above and/or below. Maybe we need to reduce the size of the key symbols slightly, so that the don't exceed the normal confines of the lines, and thus disturb the line spacing?

VIC-IV documentation: all sprite features of Mega65

According to Paul's advice, requesting detailed documentation on all sprite features available of mega65: ie, maybe more X/Y resolution, more X/Y expanding features, other colour modes (like 16 colour sprites), transparency (especially how that works in 16 colour mode), maybe other colour modes, features I am not even aware of right now.

Problem with \megakey macro?

Lots of errors like this when typesetting:

! Missing } inserted.

}
l.296 ...} \megakey{Run/Stop} \megakey{\leftarrow}
\megakey{\uparrow} \megak...

ASCII table needs update

The ASCII table in Appendix C is valid for C64, but not for C65 ROMs. For example, CTRL+G produces char 7 - if you execute ?CHR$(7), you'll hear a bell. ?CHR$(8) to disable character switch does not work on C65 ROMs - probably it's used for tabulator, like on the C128. They might be other differences, I wouldn't be surprised if F9-F14 had their own codes.

Example Programs and Element Catalogue

I assume that the "Element Catalogue" at the back of the User Guide is for some additional example programs that don't fit elsewhere in the book. Could someone please confirm this?

I can contribute some example programs to this section. Should they be C65-compatible BASIC 10 programs or MEGA BASIC programs or either BASIC 10 or MEGA BASIC?

I've written a couple of graphics routines that work in BASIC 10 despite the fact that there are some C65 BASIC 10 statements that are missing some functionality.

VIC-IV documentation: "scaling registers"

According to Paul's advice, requesting detailed documentation of: how exactly that "scaling" register(s?) work, what are the scaling factors and positioning (ie visible area, not border) for given video modes with given width/height? Is it still true that in theory some can alter these scaling info, like in (IIRC) Deft's intro?

VIC-IV documentation: hot registers

According to Paul's advice, requesting detailed documentation of all hot registers/bits and the exact effect on other- native VIC IV - registers when writing them.

Do I need to be added as a maintainer?

Hi,

I'm getting a permission denied error whenever I try to push my files into the repository.

I'm using the command
git push origin master

but I get back error 403.

I have about 35 pages I would like to upload for Decimal, Binary and Hexadecimal conversion, plus some Reference Tables.

Does someone need to add me as a maintainer of the repository first? Or is it a problem at my end?

Thanks for the help.

Mark

VIC-IV documentation: raster counting and raster IRQ

According to Paul's advice, requesting detailed documentation of raster counting and raster IRQ. is there the legacy (VIC-II register layout) 9 bits of raster counting enough to see the current raster line and/or having a raster IRQ? Is there any "native mode" version as well? For eg 200 pixel height mode, how it's connected with the "native VGA resolution", there are different kinds of raster counting and raster IRQ as well in this case? For he mentioned 200 pix example will it generate a raster IRQ at line eg 190 for actually TWO vga rasters, since it's about (as far as I can imagine) two native raster lines per "emulated" raster line?

Fonts derived from Glacial Indifference require updated meta-data

We need to modify the meta-data in these fonts, so that they really are a unique typeface. This should be done in any case, but in the short term the problem it causes is that we can't use Mega Glacial instead of Galcial Indifference in Inkscape to draw diagrams with text in the correct font on them.

VIC-IV documentation: memory management/layout/addresses

According to Paul's advice, requesting detailed documentation of memory usage of VIC-IV. What I mean here, like: VIC-II 16K style (using CIA) selection, the VIC-III style 32K, CHR-WOM (and why it's doubled recently, or what it was), the exact locations of sprite pointers (especially in bitplane mode I am not sure where are they exactly!), also the native addressing registers allowing to freely set these, including but not only the infamous bitplane mode with all the bitplanes. Also of course all native mode possibility for these settings like how sprite pointers can be modified, is it possible to use totally different areas of all VIC-IV ram for sprites, or the legacy way to have the few bytes at the end of video RAM only allows 1 byte / sprite so it's not too much free, etc, things like that.

VIC-IV documentation: palette handling

According to Paul's advice, requesting detailed documentation of exact palette handling, as far as I can see, compared to C65, it's a bit more complicated, even multiple palettes, sprite palette as separated (?), more colour resolution per R-G-B channel, ROM palette (also exists on C65 IIRC), and so on, corresponding register layout, etc.

VIC-IV documentation: register/colour RAM behaviour in different VIC I/O modes

According to Paul's advice, requesting detailed documentation on the behaviour of VIC in different I/O modes in terms of usable/meaningful bits (of registers and colour RAM) specially when you change I/O mode.

For example: IIRC on C64 (VIC-II mode) the colour RAM only have the lower 4 bits, reading colour RAM at the higher 4 bits seems to be always set. Maybe this is also a compatibility problem if it's not done this way. Also some registers (like background, border, colour registers of sprites, ...) have only defined value for the lower 4 bits, and IIRC the upper 4 bits are always set when read.

Is it true for M65 in VIC-II I/O mode? And what happens on mode transition, ie value of (let's say) $AA is stored in the colour RAM or in a VIC colour register in VIC-IV mode, but changing back to VIC-III or VIC-II I/O mode, what will happen then if you read those registers / colour RAM, also what is the behaviour of the display, what colour can you see then where it applies (ie background changes back to given by the lower 4 bits only, having the VIC-II requirement to always see the unused uppoer 4 bits set?).

VIC-IV documentation: VIC-level timing like bad line condition

According to Paul's advice, requesting detailed documentation of exact timing of different VIC modes for PAL and NTSC, now not the native VGA video mode behind but the VIC-level, like "bad line" condition and similar things if there are more, also I would like to know if there are any different between video modes or they are always at every 8th line?

Bonus question: is badline timing is VIC-II specific? I guess it's not so much use to slow things down for M65 (non-legacy) software, so it can be useful to turn that off, by default in VIC-IV mode, or at least via some register thus optionally.

VIC-IV documentation: all video/text/colour/etc modes

According to Paul's advice, requesting detailed documentation of all available video/text modes with all colour modes, including 16 bit modes, etc, with all the special cases, extended attributes, "proportional font mode", etc, like transparency (if the background can be seen - or a sprite - at a given colour, etc). Surely, with the corresponding register settings, also some assignment in which VIC mode it is available and what happens if I change VIC I/O mode while that mode was active.

Copyright notice for consideration

AO:

For the defence of copyright it should be assigned to a single entity. It's also necessary to assert the moral rights of the author to be identified as the author.

I would suggest assigning the rights to MEGA as it will then immediately attract EU copyright protection.

There should be a copyright statement including something like: "This book is copyright under the Berne convention."

Then something along the lines of:

"Paul Gardner-Stephen has asserted his moral right to be identified as the author of this work."

And finally the license for reproduction. Not sure if GPL books is any better than Creative Commons but both of them get abused a lot.

VIC-IV documentation: sprite coordinates / coordinate system

According to Paul's advice, requesting detailed documentation of the sprite coordinate system on the screen. Only the legacy VIC-II method exists to set a sprite to a given position, or there is a higher level of "fine" control, and if there is so, what is the connection between the "legacy" and "native" coordinates? Are there the coordinates fixed, ie whatever VGA level and VIC level resolution and mode is used, the sprites are always at the same "physical" position on the screen, or how it's handled? And to relative to the border in a given VIC mode? Even if you modify the border position for example at the "VGA" level or so?

ethernet register description missing

The program document-memory extracts register descriptions from VHDL files in the repository /mega65-core. This does not work for the file "ethernet.vhdl", because the required comment lines, starting with -- @IO:GS have not the proper format, that is expected from document-memory . The table name and the mode is missing. The file "appendix-45e100-registers.tex" tries to input "regtable_ETH.MEGA65.tex" and "regtable_ETHCOMMAND.MEGA65", which should be generated by document-memory, once the -- @IO:GS lines have the proper format. I put two empty dummy files with the above names into the repository until this issue is resolved. Can someone with knowledge put the missing information into the file "ethernet.vhdl", please?

Introduction to the screen - section.

Introduction chapter to the screen, the layout, and the keyboard combinations to work with the Mega65 screen. Also covers colour bar experiments, coloured text, and advanced text modes.

VIC-IV documentation: low level VGA/HDMI mode specification / selection

According to Paul's advice, requesting detailed documentation of the low level VGA/HDMI specific features and internals of M65 for PAL and NTSC. Are VGA and HDMI is the same for timing/resolution view of point exactly? What are those modes exactly with timing. Is there a possibility to set different VGA mode by will? What registers can be used and how to alter "VGA level" (and HDMI) video mode parameters if it's even possible other than setting PAL or NTSC and the corresponding mode for that? Actually how can you select PAL or NTSC which may affect other things (CIA TOD speed maybe? others?) as well?

VIC-IV documentation: top-of-the border sprite question

According to Paul's advice, requesting detailed documentation of the possibility to turn border off. What I mean to be able to show sprite on top of the border without having any video mode etc active though. On C64/VIC-II there are some fine timing tricks to "turn off" the borders but it needs quite exact timing, and honestly I feel it's better to have an ability like this without tricks like that. Surely, it must be VIC-IV mode only, and optional, not enabled by default!

VIC-IV documentation: scrolling

According to Paul's advice, requesting detailed documentation about scrolling, especially how VIC-II style "fine scrolling" is implemented, and is there any scrolling feature of VIC-IV in any way other than that?

VIC-IV documentation: question: is there a 16 colour video (not sprite) mode?

is there any 16 colour video mode (not sprites ...)? I think that would be extremely useful, as higher res video modes requires large amount of RAM, and often you don't need 256 colours too much, but 4 colours (MCM) is too few ... I remember I asked this already (a long time ago) then you said, it's not so much planned currently.

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.