You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README-Atari.md
+11-8Lines changed: 11 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,9 @@ GEOS 2.0 by Berkeley Softworks
4
4
5
5
This is a fork of [GEOS 2.0 for C64/128 reverse-engineered](https://github.com/mist64/geos) by *Maciej Witkowiak*, *Michael Steil*
6
6
7
-
GEOS 2.0 was ported to 8-bit Atari by *Maciej Witkowiak*
7
+
GEOS 2.0 was ported to 8-bit Atari by *Maciej Witkowiak* in October 2022.
8
+
9
+
There is also a patched [geoWrite](https://github.com/ytmytm/geowrite-atari) that works better on an Atari.
8
10
9
11
<imgsrc="screenshots/desktop.png"alt="DeskTop on an Atari"width=800>
10
12
<imgsrc="screenshots/notepad.png"alt="Desk accessory over DeskTop"width=800>
@@ -77,20 +79,20 @@ They may not work at all or show some graphical glitches. For example, if an app
77
79
| IconEditor | too many visual glitches to be usable |
78
80
| GeoPublish | not as bad as GeoPaint, but still not usable |
79
81
| GeoCalc | crashes because it needs CBM BASIC for floating-point calculations |
80
-
| GeoWrite | patched to Atari works ok-ish if you type slowly |
82
+
|[GeoWrite](https://github.com/ytmytm/geowrite-atari)| patched for Atari works ok-ish if you type slowly |
81
83
| GeoFile | minimal visual glitches |
82
84
| GeoChart | works fine except area-fill chart |
83
85
| GeoDex | works fine |
84
86
85
-
Just like on C64 the processes (sleep and multitasking) are clocked by video frame rate.
86
-
87
87
### Performance
88
88
89
89
Atari port is probably somewhat faster than C64/128. Atari has higher CPU clock rate and linear screen organization that is easier to handle than VIC bitmap.
90
90
All the rectangle functions (*Rectangle*, *InvertRectangle*, *ImprintRectangle*, *RecoverRectangle*) have been optimized to reuse calculated screen coordinates.
91
91
92
92
Keyboard has its own interrupt and doesn't have to be scanned for every row/column.
93
93
94
+
Just like on C64 the processes (sleep and multitasking) are clocked by video frame rate.
95
+
94
96
### System startup
95
97
96
98
The boot code jumps right into DeskTop, but eventually it should at least try to run Auto-Exec applications from RAM disk.
@@ -113,7 +115,7 @@ Missiles/Player4 are not used.
113
115
114
116
A very simple joystick driver controls the mouse pointer. This driver doesn't support acceleration (but it should!). I couldn't get the original joystick driver to work.
115
117
116
-
Joystick driver can be changed during runtime, but the code has to be ported - you can't use any joystick drivers from GEOS64/128.
118
+
Joystick driver can be changed during runtime, but the code has to be ported first - you can't use any joystick drivers from GEOS64/128.
117
119
118
120
#### Keyboard
119
121
@@ -153,7 +155,7 @@ Atari has less RAM available because it can't switch off I/O and allocates whole
153
155
| $60-$7F | screen backbuffer, but on Atari moved to bank 0 of expanded RAM; any native Atari GEOS application can use it |
154
156
| $80-$8B | system variables |
155
157
| $8C-$8F | color matrix on C64/128, Player0-3 graphics on Atari |
156
-
| $90-$9D | reserved for disk driver, this would be swapped with expanded RAM by *SetDevice* function |
158
+
| $90-$9D | reserved for disk driver, this area would be swapped with expanded RAM by *SetDevice* function |
157
159
| $9E-$9F | GEOS Kernal code and variables |
158
160
| $A0-$BF | front buffer for 320x200 hires screen, it is shifted by 56 bytes to match exactly the 4K boundary on 101st line and keep linear addressing |
159
161
| $C0-$CF | GEOS Kernal code |
@@ -204,9 +206,9 @@ There are none, they will have to be ported. See Disk Drive section for notes ab
204
206
205
207
### Time and date
206
208
207
-
There is no CIA time-of-day (TOD) clock, timekeeping is done by counting vertical blank interrupts. During banked operations a short interrupt routine is called and some of these events may be lost.
209
+
There is no CIA time-of-day (TOD) clock, timekeeping is done by counting vertical blank interrupts. During banked operations a short interrupt routine is called that doesn't advance seconds.
208
210
209
-
TOD clock from CIA#1 is emulated by converting current time into BCD and storing into $DC08-$DC0A, where DeskTop reads it directly.
211
+
TOD clock from CIA#1 is emulated by converting current time into BCD and storing it back into $DC08-$DC0A (as if it came from CIA chip), where DeskTop reads it directly.
210
212
211
213
There is no support for an alarm clock. It's tied to CIA TOD clock hardware feature.
212
214
The system doesn't provide any function to set the alarm (it's done in hardware by a Desk Accessory) you can only choose if/how it should react to the alarm.
@@ -240,3 +242,4 @@ There is another program in `tools` directory, that analyses resulting `build/<a
240
242
uses optimizer to put GEOS Kernal code into all available gaps as neatly as possible, so that as much as possible remaining area stays
241
243
just under $FE80 (input driver) address.
242
244
245
+
[GeoWrite](https://github.com/ytmytm/geowrite-atari) can be rebuilt by checking out `atari` branch and issuing `make` followed by `make cvt`.
0 commit comments