giomba
7a546ad391
Add proper timer_cleanup routine.
2025-09-14 17:29:04 +02:00
giomba
6548b4f5f6
Update Makefile to compile new modules for the demo.
2025-09-14 17:29:04 +02:00
giomba
12d6c3e503
Update main to exploit string and demo module.
2025-09-14 17:28:59 +02:00
giomba
0bbe5e4b50
Add dedicated module to simulate stdlib strings.
2025-09-14 17:28:59 +02:00
giomba
cb581b9082
Add dedicated "demo" module to enable/disable parts at runtime.
2025-09-14 17:28:59 +02:00
giomba
d463234500
Update CGE demo to use music too.
2025-09-14 17:28:59 +02:00
giomba
b9e9aeef8d
Add basic VGM player which uses interrupts.
2025-09-14 17:28:59 +02:00
giomba
4b8c986fe7
Run interrupt timer at 300Hz.
...
300Hz is good because it allows you to run both 50Hz and 60Hz songs with
the same interrupt.
VGM uses a sample rate of 44100Hz (totally unrealistic for the original
hardware on which the SN76489 actually ran, but that's it).
Of course we cannot use the timer at 44100Hz, because that would mean
only 90 Z80 clock cycles in between interrupts, so we use instead a
300Hz interrupt.
One 300Hz interrupt is the same as 147 samples at 44100Hz, which is 5
interrupts (or 147 × 5 = 735 VGM samples) for 60 Hz songs, and 6
interrupts (or 147 x 6 = 882 VGM samples) for 50 Hz songs.
2025-09-14 17:08:13 +02:00
giomba
d44d9c902f
Add "Rudolph, the red-nosed reindeer" song asset.
2025-09-14 17:07:26 +02:00
giomba
149cdfa872
Properly preserve all registers when entering the ISR.
2025-09-14 17:07:26 +02:00
giomba
fb99ec2703
Move IVT to $0100
2025-09-14 17:07:26 +02:00
giomba
3a07150771
Embed timer's assembly routines in the CRT.
...
This is not The Right Way to do it, but I lost the fight with the
linker, and This Just Works (tm).
2025-09-14 16:44:26 +02:00
giomba
b0e303325f
Add CTC module to use timer interrupts.
2025-09-14 16:44:26 +02:00
giomba
a9599ca8c5
Have CGE demo present the custom charset for a bit more.
2025-08-27 21:54:17 +02:00
giomba
d963c98788
Setup proper memory map when running demo under CP/M.
2025-08-27 21:35:28 +02:00
giomba
6a7b55e45f
Update README.md
2025-08-27 21:35:19 +02:00
giomba
68a211ffea
Add CGE w/ Christams demo.
2024-12-28 19:14:01 +01:00
giomba
7e83a551db
Add demo part for CGE mod.
2024-12-28 19:14:01 +01:00
giomba
0d9b24a423
Add infrastructure to enable/disable demo parts at runtime.
2024-12-28 19:14:01 +01:00
giomba
50f0ffb22b
Add Christmas tree image.
2024-12-28 19:14:01 +01:00
giomba
7840e66fda
Add hello.c image.
2024-12-28 19:14:01 +01:00
giomba
1530fbdf2d
Add falling snow module effect (first draft).
2024-12-28 19:13:52 +01:00
giomba
1a0f5354a2
Use linear memory for stack when running with BIOS only.
2024-12-28 11:39:30 +01:00
giomba
733a670eb1
Add mmap_get() API to retrieve current memory bank configuration.
2024-12-28 11:39:30 +01:00
giomba
dfee9008b2
Add video_get() API to get char from video memory.
2024-12-28 11:39:30 +01:00
giomba
dd0fc88c08
Add video_enableUnderline text interface.
2024-12-28 11:39:30 +01:00
giomba
6a8afc5802
Embed magic cursor demo in main one.
2024-12-15 11:13:34 +01:00
giomba
f5b601f204
Add magic cursor demo part.
2024-12-15 11:13:02 +01:00
giomba
85bcb4f339
Add CRT_FRAMES_PER_SECOND define.
2024-12-15 11:12:36 +01:00
giomba
e2d3ccd317
Add API to enable cursor blink.
2024-12-15 11:11:50 +01:00
giomba
66d5a6187e
Exploit mmap module to bank memory.
2024-12-14 19:36:21 +01:00
giomba
d270985dba
Add mmap module to bank various memory in and out.
2024-12-14 19:35:15 +01:00
giomba
b461731f45
Add CRT to run under CP/M.
...
The Makefile now builds the demo with $100 as its entry point, then it
is linked both against the bios-only crt, and the CP/M-aware crt.
The bios-only version can be run without the operating system, but needs
to be loaded via serial directly using a BIOS rom with a custom loading
routine.
The CP/M-aware version, instead, can be run as a normal executable from
a diskette, but keep in mind that this is a demo, so it is not designed
in such a way that it is safe to go back to CP/M at the end of the demo.
It may be possible, but I won't make any effort to guarantee it.
2024-12-14 18:58:42 +01:00
giomba
a943cbe5c3
Loop demo forever.
2023-11-24 20:49:47 +01:00
giomba
ae4a6eea8a
Import FVB banner, decent cleanup for this release.
2023-11-20 21:16:31 +01:00
giomba
41174485b8
Add some attribute handling for video module.
2023-11-20 21:16:13 +01:00
giomba
e70a9b9cc4
Add Firenze Vintage Bit flip flap display.
2023-11-19 21:33:50 +01:00
giomba
60e40fe77d
Display both matrix effect and GLG intro.
2023-11-19 21:21:30 +01:00
giomba
3c0c65c0d4
Update Makefile and main.c to use new modules.
2023-10-22 22:08:37 +02:00
giomba
7a9e33e352
Add flip-flap display effect.
2023-10-22 22:08:21 +02:00
giomba
4016014641
Expose video memory address.
2023-10-22 22:08:06 +02:00
giomba
be4f7c628f
Improve The Matrix effect.
2023-10-22 22:07:11 +02:00
giomba
98d7a5c00a
Update Makefile and main.c to use new modules.
2023-10-22 11:42:03 +02:00
giomba
9668db9853
Add matrix effect.
2023-10-22 11:41:47 +02:00
giomba
1156e03305
Add small performance test to compute Z80 actual speed.
2023-10-22 11:41:16 +02:00
giomba
a80c52bedd
Add compiler.h specific macros.
2023-10-22 11:40:57 +02:00
giomba
21c4c1eb98
Remove ceda_* generic module.
2023-10-22 11:40:46 +02:00
giomba
9d8bede050
Add method to wait for some frames in CRT.
2023-10-22 11:40:28 +02:00
giomba
a49102fbac
Add method to disable cursor.
2023-10-22 11:40:03 +02:00
giomba
d3e2651212
Add linear feedback shift register to generate "random" numbers.
2023-10-22 11:39:02 +02:00