forked from emptymalei/collapseos
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCHANGES
622 lines (553 loc) · 26.6 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
This file contains, in reverse chronological order, the list of changes for
each of the releases that followed the break away from Git. For changes prior
to that, download the git archive from http://collapseos.org and use "git log".
Many of these releases break bootstrapping. This means that if you begin with
an up-to-date Collapse OS on a system that self-hosts and simply update your
blkfs media to that of the new release, you won't be able to build a new system.
Most of the time, the reason for it is trivial and all you need to do is to
sprinkle some "shim words" around. Sometimes, it's not trivial.
All of this to say: most of the time, the easiest way to deploy an updated
Collapse OS after a new release is to build the binary from a POSIX machine.
*** 2023-04-27
* z80: rewrite assembler to remove global states, making it more macroable. Also
make all instruction words lowercase and change semantics with regards
to immediates and memory references. Also, removed the () syntactic sugar
as it wasn't bringing much to the table. See doc/asm/z80.
*** 2022-08-25
* Fix inaccuracies in documentation.
*** 2022-05-09
* Fix broken font compiler. (Michael Schierl)
*** 2022-05-08
* mspan: allow heterogenous media span. Allows medias to fit Collapse OS block
organization better. See doc/mspan.
* mspan: Replace DRVSWAP ('s' key) with DRVSEL (0-9). See doc/mspan.
* trs804p: replace "homebrew" mspan with MSPANSUB implementation.
* appleiie: adapt xcomp to MSPAN changes.
* z80: rewrite assembler to remove ops suffixes. ops form is now deduced from
preceding arguments. see doc/asm/z80.
* z80: ajust boot code and drivers for new assembler style.
* z80: add some syntactic sugar to the assembler. See doc/asm/z80.
* Add <> to core. See doc/dict.
* Bring MIN and MAX back to core. See doc/dict.
* Change TO semantics. See doc/usage.
* Remove [TO] and VAL! which aren't needed anymore.
* Add string manipulation words to B4.
* Move 'N and LN< SYSVARS around to make some space for '(wnf) and TO?.
* xcomp: add CONSTS+ to allow for cleaner SYSVARS declarations.
* All SYSVARS are declared at the same place, the first block of core.
* Add "word not found" override. See doc/usage.
* z80: use RST30 slot for lblval, making all VALUEs 2b more compact.
* Re-remove VARIABLE. There are too few cases where it has better tradeoffs
than VALUE. It makes more sense to use CREATE 2 ALLOT for those few cases.
* ME: it was broken. fixed.
* 6809D/6809E: fix breakage caused by core words changes.
* 6809D: fix op mixup in GRPC/GRPD.
* 6809D: rework so it's more stateful and thus more reusable by 6809E.
* 6809E: simplify by relying more on 6809D.
* 6809E: fix broken behavior of some indirect address modes.
* 6502E: fix breakage caused by core words changes.
* 6502E: spit op disassembly in verbose mode.
Note: my Apple IIe is broken and I haven't repaired it yet. The change to lblval
has been tested through Collapse OS' 6502 emulator, but not on a real machine.
I hope I haven't broken it.
*** 2022-04-11
* doc: add doc/grok.
* doc: sprinkle around some clarifications and typo fixes.
* pcat: fix broken NEWLN. (binarycat)
* VE: add n and N commands. See doc/ed.
* VE: make W stop 1 char further, making it more useful with copy/paste.
* VE: remove B (b stays) for which I can't think of an actual use except cute
symmetry.
*** 2022-03-16
* 6502: optimize (next).
* 6502: fix memory corruption bug in MOVE.
* appleiie: implement grid scrolling.
* VE: Add "C" command. See doc/ed.
* xcomp: document PC2A. See doc/cross.
* grid: Add STYPEC FILLC and CLRSCR. See doc/grid.
* Remove CONSTANT, keeping only VALUE. CONSTANT still exists in xcomp.
* Remove Stable ABI. Instead, we insert those forward values through labels at
compile time. See doc/bootstrap.
* Rename LIT" to S" (looks better).
* xcomp: Add ~DOER. See doc/cross.
* Add FMTD FMTx and FMTX. See doc/dict.
* doc: merge primer.txt into usage.txt. Makes more sense this way.
* Make JMPi! and CALLi! implementation optional for most ports.
*** 2022-03-06
* appleiie: fix GRID cursor glitch.
* New subsystem: MSPAN. See doc/mspan.
* appleiie: implement MSPAN.
* appleiie: Make GRID implementation faster.
* 6502A: fix broken ELSE,.
* 6502: properly sign-extend SCNT result.
* 6502: make [C]? work with u>$ff.
* Remove i>! and make CONSTANT and VALUE the same (again).
* 6502D: fix broken reference to ORG.
* appleiie: add SPI relay driver, allowing us to have the SD card subsystem
running! See doc/hw/6502/appleiie/spi.
* sdc: check for error condition in SDC!.
*** 2022-02-21
* appleiie: Implement GRID.
* Make BLKSUB variables separate from SYSVARS.
* Reduce SYSVARS size to $60 bytes.
* core: add 0>= and [C]?.
* ed+ve: make find command faster with [C]?
* Add a new concept: Word tables. See doc/wordtbl.
* ve: use word table to avoid littering the dict with command words and thus
avoid conflicts with other apps of this type.
* Restrict DUMP ASCII view to the $20-$7e range. On the Apple IIe, letting chars
over $80 be displayed as is results in some control characters spouting out,
messing everything. In ME too.
* blkfs: defragment the B0-B199 range.
* Move nC, from B001 to core.
* 8086A: add [m] [M] [r] [x] modrms. See doc/asm/8086.
* 8086A: add MOV[ALm,AXm,mAL,mAX].
* 8086A: add ADC.
* 8086A: add []i form to ADD ADC SUB CMP.
* Remove the HAL as we know it. It still exists, but has a different purpose.
See doc/asm.
* Implement all native words that don't absolutely need to be native, as ?:
words, in pure forth. This allows new ports to be much, much more barebone and
only implement "speedup" words as needed.
* cvm: remove all native words that aren't absolutely needed. This is, of
course, obscenely inefficient, but because the CVM runs on obscenely fast
CPUs, slowdown is barely noticeable. This allows the CVM to properly test
forth implementation of optional native words.
* Remove anonymous words from kernel (they're still in xcomp). This was added as
a companion to the HAL, but they don't make sense any more.
* Remove CDOES>. It only makes sense with the HAL.
*** 2022-02-16
* appleiie: Add BLK subsystem using ProDOS' MLI.
* appleiie: Move to $2000 and allow creation of disks that boot directly to COS.
* Remove B register. Its benefits weren't worth its weight. The A register saves
a lot of stack juggling, but the B register, although somewhat convenient,
doesn't save as much.
* Add AC@ and AC! words.
* z80: assign IY to A register role.
* ed: fix P cmd which didn't properly clear IBUF.
* Rearrange xcomp/asm/hal so that code is better decoupled and simpler. This
allows the removal of SYSVARS BIN( and ORG from the kernel, which were only
there as clutches. See doc/cross and doc/asm/intro.
* sms: simplify xcomp units.
* pcat: implement NEWLN. (binarycat)
* ve: make selected line in status bar 1-based. (binarycat)
*** 2022-01-28
- appleiie: liftoff! Still rough around the edges, but we have prompt, obvious
words work, we can define new words. See doc/hw/6502/appleiie.
- tools: add "csum".
- add anonymous words to kernel, not only xcomp. See doc/usage.
- Remove CODE[ CODE] and (c), which have no advantage over CODE~.
- hal: add JMP(i) instruction. Makes *ALIAS a lot more straightforward on many
arches, most of all on 6502.
- Make EXECUTE and NOT into arch-specific words.
- hal: remove >JMP and Z>! which aren't used anymore.
- z80: simplify FIND.
- doc: clarify doc/bootstrap.
*** 2022-01-15
- doc: improve drivers and subsystems documentation.
- doc: add doc/design.
- Add WORD! which is a remix of the old W"". See doc/dict.
- Add WAITW. See doc/dict.
- xcomp: add ?: and ?CODE to simplify optional word definitions.
- xcomp: make '? mean the same things as in core. This was getting confusing.
- xcomp: add :~. See doc/cross.
- 6809: add Dragon 32 keyboard layout, but the right one this time...
(Tormod Volden)
- z80: Take advantage of ?: and ?CODE for some juicy overrides.
- z80: Optimize HAL C>! word.
- Fix bug in FORGET which I had introduced with a dumb "optimization".
- avr: add "Arduino blinker" program.
- avr: add "Arduino SPI spitter" program. see doc/hw/avr/spispit.
- avr: add STS, LDS, LPM to AVRA.
- doc: add "SPI hack through game port" to Apple IIe docs.
*** 2021-12-17
- VE: add WIPE shortcut. See doc/ed.
- VE: Replace 't' command with a more powerful bookmark system. See doc/ed.
- Fix broken z80mbc2 xcomp.
- Deduplicate INBUF code.
- Simplify WORD.
- Replace ESCAPE! hack with a proper \S.
- z80: extend the "stable" boot code to $66 with a hardcoded RETN in there. It's
not always the right thing to do, but in many case, might avoid tricky
debugging sessions.
- cvm: fix broken RXTX mode.
- Add RX/TX subsystem. See doc/rxtx.
- Rename and move "Remote Shell" from B150 to "RX/TX Tools" in B010.
See doc/rxtx.
- tools: add blksrv. See doc/blksrv
- Add blksrv client to RX/TX Tools.
- 6809: add Dragon 32 keyboard layout. (Tormod Volden)
*** 2021-11-26
- Fix broken CoCo2 port.
- tools/upload: verify written data instead of received data. This way, if the
EEPROM acts weird, we know.
*** 2021-11-20
- Continue progress with Apple IIe port. Still a WIP.
- Add 6502 emulator. See doc/emul.
- Add 6809 disassembler. See doc/dis.
- Bring the 6809 emulator back from extras and into main blkfs and make it work
with new kernel. Emulators within Collapse OS are useful, not "extras". This
ends the "extras" section.
- Begin littering the blkfs with "Virgil's workspace" sections. See doc/intro.
- tools: make blkdown spit to stdout.
- Fix PS leak in LNLEN.
- ED: Fix awkward typing and printing. (from binarycat)
- ED: rename i to I, now that I isn't in core anymore.
- 8086: make (key?) use cmd 1 of int16h for non-blocking polling. Also, fix bug
where some keystrokes would break the system.
*** 2021-10-30
- I'm back to "Building COS from COS" mode, like with 6809. This time, I'll
build better tooling to make this type of work easier.
- Continue progress with Apple IIe port. Still a WIP.
- HAL: Add >(i) (i)+ and (i)-.
- Use new HAL ops to implement A register words in HAL.
- Add B register.
- Back down on using A register in low-level words. Too many conflicts.
- Rename I to R@.
- Add R~.
- Add NEXT. See doc/usage.txt
- Replace all DO..LOOP with BEGIN..NEXT and remove DO..LOOP.
- Remove 2R>, UNLOOP.
- Change LEAVE so it exits BEGIN..NEXT instead of DO..LOOP.
- Significantly simplify PARSE with the use of A and B registers.
- ED: fix broken _type.
- ME: fix bug where ME would always halt after the first keystroke the second
time it's invoked.
- cvm: add RXTX make option to allow debugging of RX<? and TX>.
- Brought back tests in the core code. With the arch split, blkfs feels less
crowded and it makes more sense to have them close.
- Straigtened out makefiles w.r.t. GNU make vs BSD make.
- trs804p: add disk management system. See doc/hw/z80/trs804p.txt
- 6502: add disassembler.
- Add pager to B124.
*** 2021-10-07
- Continue progress with Apple IIe port. Still a WIP.
- Add INLINE. See doc/usage.txt.
- Rework the HAL significantly. See doc/hal.txt.
- Simplify DOER/DOES> and add CDOES>, a way to have does words with native
code. See doc/usage.txt
- Remove ENTRY which became the same as CODE with DTC.
- Change ALIAS semantics and make it read-only. See doc/usage.txt
- Make *ALIAS and *VALUE read-only and only available to xcomp. This means
removing *TO and [*TO].
- Add layer of indirection in VALUE. lblpush was replaced with lblval.
- z80: move cell routine to RST, making CREATE more compact.
- Bring CONSTANT and CONSTS back
- Bring +! back.
- Make VALUES always initialize to 0.
- Add A register. See doc/usage.txt
*** 2021-09-24
- Fix broken CODE[ ]CODE for any arch with JROFF != 0, that is all but CVM.
- z80: fix scrolling bug in dan SBC drivers. (Daniel Marks)
- Add 6502 assembler.
- Begin a port of Collapse OS for the Apple IIe. This is a WIP.
- Add doc/arch.txt to explain clearly how to do cross-arch deployments.
- Move assemblers to arch-specific blk.fs units.
- Move AVR assembler and related code into its own "portless" arch.
- sms: have the Makefile automatically build the AVR firwmware for PS/2.
*** 2021-09-17
- HAL: add CALLi and (i)>w.
- Simplify DOES> logic with the addition of DOER. See doc/primer.txt.
- Make Collapse OS into a Direct Threaded Code forth. See doc/impl.txt.
- Remove unused I' and J.
- Move MOVE- from core to B120.
- Move PAD to SYSVARS.
- Remove QUIT jump from stable ABI. With DTC, we can easily call it directly.
- Add Dan SBC. See doc/hw/z80/dan.txt. (Daniel Marks)
- trs804p: fix broken RX<?.
- trs804p: improve reliability of floppy driver.
- Extract arch-specific code to separate blk.fs files in /arch/*.
See doc/blk.txt
- Fix broken BS handling in RDLN.
- Extract LNTYPE from RDLN.
- VE: use LNTYPE to make BS work again during typing.
*** 2021-08-31
- Introduce a new concept: the Harmonized Assembly Layer. See doc/hal.txt
- Port the CVM to HAL
- Make the z80 port into a HAL
- Make the 8086 port into a HAL
- Make the 6809 port into a HAL
- Improve doc/boostrap.txt. More detailed, clearer, mentions HAL.
- Fix broken PS dump in .S
- cvm: fix broken xcomp. It wasn't apparent because serial.bin wasn't refreshed
before release and wasn't current.
- z80: Fix broken SIOB<? (Daniel Marks)
- Make STACK? and .S "stack implementation agnostic", that is, don't require
random access to stack memory. 'S 'R S0 R0 disappeared and were replaced by
SCNT and RCNT. The 4 byte buffer over PS doesn't exist anymore.
- 8086: Assign BX register to the "PS TOS" role.
- sdc: make subsystem compatible with older SD cards. (Daniel Marks)
- Fix off-by-one bug in _bchk. (Daniel Marks)
- Overhauled documentation which was getting out of date in quite a few places.
*** 2021-08-13
- trs804p: fix broken recv.fs and boot.fs.
- trs804p: improve self-hosting docs.
- pcat: fix broken mbr.fs and xcomp.fs. (Jakob Krisch)
- tools: fix broken blkup and upload.
- Remove chkPS, macro. We now check for stack underflow "after the fact".
See doc/impl.txt.
- Update CONTRIBUTING to better reflect my current stance.
- Remove INIT from Stable ABI. The name is now hardcoded to "INIT" and called
as such directly by BOOT.
- Add CURRENT field to Stable ABI and remove the "hook" word generation from
XWRAP.
- Move HERESTART logic to xcomp. BOOT now unconditionally initializes HERE from
the LATEST field in Stable ABI.
- at28: remove AT28$ which did C! and ! overrides. Making MOVE native made this
scheme less useful. We let the user make the C!/! overrides herself.
- Remove unused W" system.
- Remove redundant (s) word and replace it, in LIT", with a mix of (br), (b) and
(n).
- z80: fix SDC timing error after a write. (Stefan Paul Noack)
- z80: Use BC register as the Top Of Stack element. See new "Register roles"
section in doc/impl.txt
- add CODE[ word for native code inlining. See doc/asm/intro.txt
- Add missing doc/code/6809.txt document.
- Add CRC16[] in B120.
- Add BLK>MEM in B121.
*** 2021-08-02
- New app: the Memory Editor. See doc/me.txt
- Change FIND/PARSE order during INTERPRET and :. See doc/usage.txt
- VALUES can now contain regular (single) words, not only literals.
- Remove unused BIN+.
- Strings are now passed "unpacked" (sa sl) rather than encoded. This allows a
simplification of the word-reading routine.
- Make FILL, MOVE and MOVE- into native words. They are often performance
bottlenecks and those are the kind of operations that often have specialized
CPU ops (in z80 and 8086 at least).
- cvm: implement grid's NEWLN, allowing scrolling.
- Make hex literal parsing case insensitive.
- Add word INDEX. See doc/blk.txt
- Begin improving code with INDEX-friendly first lines in each block.
- Add "Application loaders" to BLK subsystem. See doc/blk.txt
- z80/sms: fix a couple of broken xcomp units.
- Remove unused LOAD+, LOADR+.
- Remove the ability to nest LOADs, simplifying code.
- Use VALUE instead of VARIABLE for assembler labels.
- Remove unused VARIABLE. We always use either VALUE or CREATE instead.
- grid: remove unused XYMODE. It was only necessary when VE used AT-XY and EMIT,
but now that it mostly uses CELL!, this hack became spurious.
- blk: make BLKDTY into a *VALUE.
- VE: use CELLS! instead of CELL! where appropriate.
*** 2021-07-26
- trs804p: implement fully native drivers and bootloader!
- Make BLK into a separate subsystem and remove indirection
layer in BLK@* and BLK!*. See doc/blk.txt.
- Remove "0b" literals.
- Change "0x" literal prefix to the more traditional (and simple to parse) "$".
- Rename (parse) to PARSE.
- VE: change cmd prefix from $ to % to avoid clashing with literals.
- z80: simplify and optimize FIND implementation.
- Make dict previous entry offsets absolute instead of relative.
- Move HERE and CURRENT initialization, which was previously arch-specific code
to arch-independant Forth code.
- Remove EMPTY and make BOOT user-callable.
- Add word "MEM>BLK" in B121.
- Add word "context" in B122. See doc/usage.txt.
- xcomp: improve error handling and documentation (doc/cross.txt).
- VE: Replace many AT-XY calls with CELL!, making screen refreshes faster and
less noisy.
- grid: Change NEWLN signature, giving more flexibility to video drivers in
handling the event. See doc/grid.txt.
- grid: Add CELLS! optional word, which can greatly speed up screen refreshes.
- Remove RCS metadata which doesn't have much advantage over comparing tarball
snapshots.
- ed+VE: Make IBUF and FBUF into counted strings, making their manipulation more
straightforward.
- Redefine "empty char cell" as $20 rather than $00. Affects WIPE and IBUF/FBUF.
- VE: display all characters as-is rather than spitting chars lower than $20 as
$20. Previously, $00 chars all over the place would make the screen
unreadable, but now it works.
- blkpack: fill with $20 instead of zeroes.
- VE: Stop using RDLN for input. It wasn't working well with IBUF/FBUF as
counted strings.
- Remove KEY> putback buffer which isn't needed anymore. With hindsight,
piggybacking on RDLN from VE wasn't such a clever idea after all. It
introduced significant "side-complexity".
- emul: remove TRS-80 4P emulator. It wasn't emulating at the proper level any
more and I didn't want to write another.
*** 2021-06-16
- Change word type numbering scheme. It's now simpler to decode.
See doc/impl.txt
- Rename CONSTANT to VALUE, *! to VAL!, **! to *VAL!, CONSTS to VALUES.
- Rename :* to ALIAS, :** to *ALIAS.
- Add *VALUE, TO, *TO, [TO] and [*TO]. See doc/usage.txt
- Make CURRENT, HERE, IN(, IN> and BLK> into *VALUE.
- Add KEY> and NL values to avoid SYSVARS offset hardcoding.
- Make SYSVARS more compact.
- Remove unused +!, EOT? and RAM+.
- Simplify VE.
- asm: make ORG and BIN( into VALUEs.
- cvm: make code follow C89 rather than C99, remove usage of stdbool and stdint.
- Re-add 'S and S0, add 'R, R0 and .S
- Remove overflow checks. See doc/impl.txt for rationale.
- Simplify EOT handling in WORD and document EOT quirk in initialization
sequence better. See doc/impl.txt
- Move AVR firmware from doc/hw/z80/sms/code/smsps2ctl.fs to the blkfs. Firmware
for microcontrollers of supported hardware should be part of the OS itself.
- Remove |L and rename |M to L|M.
- Add the "Useful little words" section at B120, starting with nC,.
- trs804p: add support for double-density disks.
- Replace initialization string with initialization wordref in stable ABI.
*** 2021-05-15
- Add native >>, <<, >>8, <<8 words.
- Make |L, |M, RSHIFT and LSHIFT into regular Forth words.
- Rename (entry) to ENTRY.
- Add PAD and have it replace WORDBUF in SYSVARS.
- The 6809 emulator is now usable.
- Little optimizations sprinkled around.
- xcomp: remove a little cruft.
- Stop using null char termination as buffer bound in RDLN. We now use the whole
buffer for typed contents.
- Make LOAD line-based.
- Add line comments with "\".
- Make BLK buffer allocated at compile time.
- Add CONSTS word.
- Re-add tests in extras. This time, they can conveniently be ran from a
"native" Collapse OS machine (rather than needing POSIX), which makes them
more interesting.
- Tidy up 8086 code and improve docs.
- Improve asm docs.
- z80 asm: remove IX- and IY-.
- Remove CARRY? support for *. Unused yet and too complex to implement on 6809.
- 8086: implement CARRY?.
- 6809: implement CARRY?.
- Add RANGE and SRANGE, making loops over memory simpler.
- Simplify literal parsing.
*** 2021-04-21
- cvm: rename "forth" to "cos-grid" and add new "cos-serial" binary.
- z80 asm: add CALLc op.
- z80 asm: Add LDHL(HL), and LDBC(HL), macros.
- z80: use DE instead of BC to store IP. This opens the door to interesting
optimizations. I took inspiration from Brad Rodriguez's CamelForth for
this. I'm not planning, however, on having an in-register TOS like Brad
does. It looks real neat, but Brad doesn't check for overflow/underflow
like I do and I'm thinking I'd mess things up with this kind of scheme.
- z80: optimize next, exec, (br), (n), EXIT, LSHIFT, RSHIFT for speed.
- z80: minimize overflow checks through counter system.
- z80: IY register, which was previously unused, is now reserved for pointing to
SYSVARS.
- Make 2DUP, 2DROP, > into regular Forth words. Not worth keeping as native.
- Add CARRY? mechanism. See usage.txt. Not done for 8086 and 6809 yet.
- In folder extras/, there's a WIP 6809 emulator written in Forth for Collapse
OS. This should make Collapse OS a much cozier development environment.
*** 2021-04-03
- xcomp: add XWRAP".
- asm: remove BREAK,. Too complex and hackish for what it's worth.
- Remove barely used word IMMED?
- 8086 asm: add CMPri, CMPxi, and CMPxI,
- 8086: inline chkPS, code and make more compact.
- z80: make chkPS, parametrizable and inlined.
- z80: optimize lblexec for speed
- 6809 asm: fix broken [] addressing mode.
- trs804p: fix broken emulator.
- cvm: make oflw/uflw checks behave like other ports. It previously cheated,
making CVM behavior slightly different.
- Check for overflow less often. Previously, we would check at every "next"
call. Now, we check upon entering a compiled word and at the end of any
native word with a "positive" PS balance.
- Fix PC/AT MBR for some machines. (Jakob Krisch)
- VE: refactor a little bit.
*** 2021-03-20
- Complete the 6809/CoCo2 port!
- Handle SHIFT in (key?)
- Implement the Grid protocol
- Implement stack overflow/underflow detection
- Implement QUIT and ABORT
- Add doc/hw/6809/coco2.txt
- This makes Collapse OS run properly on the CoCo2. No BLK yet, but otherwise
fully functional. Keyboard debouncing is still a bit shaky, but it doesn't
make the system unusable.
- Big blkfs reshuffling. The idea was to make stuff that belong together con-
tiguous. Also, I brought back arch-specific device drivers into the main
blkfs space. When I created the arch overlay system, I hadn't yet started
offloading docs and code comments to the doc/ folder. Now that it's done,
arch-specific code isn't as heavy as it used to be, so putting everything
under the same blkfs makes sense again. See doc/usage.txt
- Remove PICK: Too complex for what it's worth.
- Remove 'S and S0: When I began, I thought I'd play with PS a lot through
those, but it turns out I never needed them.
- trs80-4p: Allow BREAKing out of I/O induced infinite loops.
- 6809 asm: detect 8-bit branching overflow.
*** 2021-03-03
- 6809 port: we have prompt! a barely usable one, but still feels good!
- Fix bugs in 6809 assembler
- Implement (imperfectly) the XMODEM protocol in the Remote Shell app.
- tools: make blkup slightly faster.
- xcomp: re-add X' which I though wasn't used, but was.
- Remove automated testing. Most of the problems popping up in Collapse OS
development are hardware-related. Moreover, now that I use Collapse OS
to develop Collapse OS, "userland" is pretty well tested that way. This
removal allows me to remove tooling that is annoying to keep around.
- Fix endian issues in core words.
- Remove unused WIPED? from core.
- cvm: make WCOLS/WLINES adjustments easier. only one place to adjust now.
- cvm: simplify the staging program.
- doc: add code subsection.
- Remove unused >< and >=0 and simplify =><=.
- Make z80 boot code more compact
*** 2021-02-19
- Make good progress on 6809 port!
- Add W"" literal, allowing to "compile" WORD-using words. For example,
": foo W" hello" CREATE ;" becomes possible.
- Remove "~C!" mechanism. It was unnecessary and slow. Made the AT28 driver,
the reason for this system, use simple C! and ! overrides.
- Remove 0, 1 and -1 native words and replace them with (b). It makes porting
simpler and makes binaries slightly slimmer overall.
- Make S0 into a Forth word.
- Add []= and make S= into a Forth word.
- Remove CMP and make =, < and > native.
- Improve 6809 assembler.
- Make xcomp tools endian-aware.
- Replace native _find with FIND. We don't need to find words in alternate dicts
anymore now that we have XFIND.
- DOES>: swap PFA and jump address so that more than 2b can be attached it.
As a bonus, fix DOES> on 8086. It was simply broken.
- Improve documentation, especially impl.txt which had a lot of out-of-date
and incomplete information.
*** 2021-02-11
- Add 6809 port WIP! Well, more of a placeholder... or a sneeze, really.
But it's a first step, and it actually runs on actual hardware and was
developed and deployed from Collapse OS itself.
- Rename HERE to H and H@ to HERE. I had it all wrong...
- Make QUIT and ABORT into native words.
- Remove ROLL which wasn't used anywhere.
- Add |T T! and T, words to assemblers. See "Endian-ness" in doc/cross.txt.
- Add "QUIT jump" to stable ABI.
- Fix endian-ness bugs in 6809 assembler
- Add "LIVETGT" helper to assemblers. See "Live Targets" in doc/asm/intro.txt.
- Improve Remote Shell reliability. It's now reliable enough for "rupload" to
be used for real stuff (for example, writing 6809 binaries to EEPROM!)
- tools: make blkunpack right-trim whitespaces.
- trs80-4p can now use both floppy drives.
- trs80-4p add WIP "native" keyboard driver in effort to remove dependency on
TRS-DOS.
- trs80-4p: improve RS-232 driver.
- Place Z80 drivers together in their own little zone in blkfs.
- Make font compilers more compact and fix a few glitches.
*** 2021-01-25
- Make Z80 and 8086 assemblers more compact
- Add 6809 assembler
- Create a new "asm" folder in doc, making it clearer.
- Add KEY> core word
- Fix PS leak in DUMP
- Improve VE
*** 2021-01-19
- Remove "breathing" in tools/. Now that we have proper RTS/CTS in place,
this mechanism is spurious.
- Improve VE.
- Remove C<? word.
- Improve LOAD.
- Remove CURRENT*.
- Improve Remote Shell and add "rupload".
- Allow using aliases in xcomp.
- Improve ACIA drivers in trs80 and rc2014.
- Add "constant" word type, making CONSTANT much faster and usable in cross-
compilation.
- Make Block Editor and Visual Editor a bit more compact in blkfs.
*** 2021-01-05
- Initial RCS-based release
- Remove all git-related files
- Transform .md files into plain text
- Add "make clean" command in every Makefile
- Add top-level "make clean" and "make dist"