-
Notifications
You must be signed in to change notification settings - Fork 85
/
Copy pathrelnotes.src
976 lines (970 loc) · 47.5 KB
/
relnotes.src
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
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
.page
.subttl RELEASE NOTES: BETA-5 03/05/85
; THE FOLLOWING MODIFICATIONS HAVE BEEN MADE TO THE BETA-4 CODE TO CREATE THE
; BETA-5 VERSION RELEASED ON 03/05/85. THE BETA-5 RELEASE IS A PRE-PRODUCTION
; VERSION INTENDED FOR SYSTEM TEST AND EVALUATION AND PRELIMINARY APPLICATION
; SOFTWARE DEVELOPMENT ONLY.
;
;
; The following changes have been made to the MONITOR:
;
; 1/ The MONITOR now accepts binary, octal, decimal and hexidecimal
; values for any numeric field. This was accomplished by totally
; re-coding PARSE and portions of ASSEM, and installing a new
; routine called EVAL. Numbers prefixed by one of the characters
; $ + & % are interpreted by EVAL as base 16, 10, 8, or 2 values
; respectively. In the absence of a prefix, the base defaults to
; hexidecimal always. ASSEM will use the zero-page form wherever
; possible unless the value is preceeded by extra zeros to force
; the absolute form (except binary notation).
;
; 2/ The MONITOR now performs limited number conversion. Additions
; were made to MAIN1 and CMDCHR and a new routine called CONVERT
; was installed to handle the conversions. Any of the characters
; $ + & % entered as a command and prefixing a numeric value are
; PARSEd (see #1 above) and the hexidecimal value printed. Full
; conversion between bases may be added in a later release.
;
;
;
; The following changes have been made to the EDITOR:
;
; 1/ PLOT (SET) now performs range checking. The cursor position
; sought must lie within the currently defined window. If it does,
; the position is changed and .C=0 returned, else NO CHANGE made
; and .C=1 returned.
;
; 2/ PLOT (READ) now returns the current cursor position within the
; current window (with respect to the window's origin) and NOT
; necessarily the screen origin.
;
; 3/ SCRORG was changed in a previous release to return the current
; window size in .X and .Y and NOT the screen size. SCRORG will
; now return the maximum screen width (39 or 79) as well in .A.
;
; 4/ The entire data file, ED7.SRC, has been relocated to $FA00 to
; allow a reserved area in ROM for foreign language systems. The
; reserved area shall be $FC80 thru $FEFF. This affects the MODE
; tables, COLor tables, BITS, local variable init table, and all
; PKY function key tables.
;
; 5/ The default screen colors for the 80-column screen have been
; changed to BLACK background and CYAN characters. This was done
; to make a more presentable screen for systems using monochrome
; monitors and allow a full pallet of colors without background
; interference for systems using RGBI monitors.
;
;
;
; The following changes have been made to the KERNAL:
;
; 1/ IOINIT now initializes the 8563 chip from an updated table now
; that the tower has been removed. Also changed were the default
; screen colors (see #5 above) and adjustments for PAL systems.
;
; 2/ IOINIT now has a delay loop of approximately 300ms incorporated
; into it to allow older versions of the VIC-1541 disk drives to
; finish their reset sequence. The system previously hung in the
; auto-boot routine if in 40-column mode with old 1541's.
;
.page
.subttl RELEASE NOTES: BETA-6 03/20/85
; THE FOLLOWING MODIFICATIONS HAVE BEEN MADE TO THE BETA-5 CODE TO CREATE THE
; BETA-6 VERSION RELEASED ON 03/20/85. THE BETA-6 RELEASE IS A PRE-PRODUCTION
; VERSION INTENDED FOR SYSTEM TEST AND EVALUATION AND PRELIMINARY APPLICATION
; SOFTWARE DEVELOPMENT ONLY. NOTE THE CHANGE TO THE CHARACTER ROM ALSO.
;
;
;
; The following changes have been made to the MONITOR:
;
; 1/ Number conversion from/to all bases (hex,dec,oct,bin) fully
; functional. Display format different from beta-5 also.
;
; 2/ The monitor DOS parser now provides DIRECTORY display using
; the syntax: @[unit#],$[drive:filespec]
;
;
;
; The following changes have been made to the EDITOR:
;
; 1/ The KEYSCAN routine was corrected to properly leave the COLM
; driver port energizing only PB7. (Previously if no keys were
; down all lines were left energized.) Also the scan of the
; CAPS LOCK key was moved to the beginning of the KEYSCAN loop
; where it will always be scanned and SHFLAG correctly updated.
; (Previously if no matrix keys were down it was not scanned.)
;
; 2/ The CLRLIN and MOVLIN routines have had all the 'kludge' code
; removed as it is no longer necessary using 8563R7 parts. Two
; absolute variables consequently have disappeared, SAV80C & D.
;
; 3/ The various tables used by the screen editor have been shifted
; around to allow better utilization of free ROM. The MODEx tables
; now start at $FA80. All other tables now float above editor code.
;
;
;
; The following changes have been made to the KERNAL:
;
; 1/ The interrupt handlers now clear decimal mode (via CLD). This
; is done AFTER the indirect jumps are made. The correct mode is
; restored upon return from the interrupt code as usual.
;
; 2/ The SERIAL & TAPE routines now work at either 1 or 2MHz speed.
; This was accomplished by replacing 'SEI' and 'CLI' opcodes in
; time sensitive routines with JSR's to new code which saves the
; current states & forces sprites off & 1MHz speed, and then re-
; stores them all when through. This required minor changes to the
; TAPE routines, but the serial ACPTR routine was totally re-coded.
; Several absolute variables to store the states have been added
; as well as one called HOLD_OFF which, if B7 is set, will cause
; these new SEI/CLI routines to be skipped & require the user to
; assume full responsibility for controlling system speed & sprites
; during tape or serial I/O operations.
;
; 3/ The space key now correctly skips the current 'found' file during
; TAPE loads. (The C= key or <no> action will initiate program load.)
;
; 4/ The CLOSE routine now saves the CARRY status in SVXT and not VERCK.
; This corrects a conflict with the LOAD routine's use of VERCK.
;
; 5/ The BURST routine now correctly reports a 'device not present'. It
; previously reported 'illegal device number'.
;
; 6/ Improved TKSA (serial routine) turnaround by putting DEBPIA inline.
;
; 7/ The OPEN routine now JSR's to OPENI for serial operations. This
; corrects a problem that occurred when the device was not present.
; OPENI pops the return address and JMPs to ERROR5 at such time.
;
; 8/ The INSTALL routine now downloads to RAM the correct code for the
; DMA Controller. Previously the wrong subroutine was downloaded.
; Also, a NOP was added to the RAM code after the DMA request.
;
;
;
; The following changes have been made to the CHARACTER ROM:
;
; 1/ Part number 315010-02 has a minor error in the font definition
; for the lower case reverse field 'v'. This has been corrected in
; part number 315010-03.
;
; 2/ Part number 315010-03 also includes a modification to the lower
; case 'm' character (both normal & reverse fields) due to several
; complaints about its appearance.
;
.page
.subttl RELEASE NOTES: BETA-7 04/08/85
; THE FOLLOWING MODIFICATIONS HAVE BEEN MADE TO THE BETA-6 CODE TO CREATE THE
; BETA-7 VERSION RELEASED ON 04/08/85. THE BETA-7 RELEASE IS A PRE-PRODUCTION
; VERSION INTENDED FOR SYSTEM TEST AND EVALUATION AND PRELIMINARY APPLICATION
; SOFTWARE DEVELOPMENT ONLY. NOTE THE CHANGE TO THE CHARACTER ROM ALSO.
;
;
;
; The following changes have been made to the MONITOR:
;
; 1/ Previously the HUNT command treated <colon> and <question> in
; ASCII strings as terminators, hence they could not be hunted
; for. This has been corrected.
;
; The following changes have been made to the KERNAL:
;
; 1/ Previously the GO64 routine redirected the soft RESET vector
; back to itself thus providing a degree of protection to C/64
; software as the system had to be powered down to escape C/64
; mode. Unfortunately DRAM devices are not as volatile as they
; used to be and many systems required as much as 30 seconds to
; elapse before they would power up into C/128 mode. The RESET
; vector is still present but the GO64 code no longer redirects
; it. Applications using RESET should note the problem and pro-
; vide a friendly escape mechanism after protecting themselves.
;
; 2/ Previously it was possible to enter C64 mode running at 2MHz.
; This has been corrected. Note it is possible from C64 mode to
; access the 1-2MHz bit (VIC register 48) to speed up certain
; operations if so desired.
;
; 3/ Several minor changes to SERIAL code. Some inaccessable code
; was removed from TALK/LISTEN routine. TKSA now errors out if
; the SA could not be sent.
;
; 4/ Previously the BOOT routine returned without reporting any
; errors. BOOT now returns errors in the same manner as LOADs,
; with the carry set and error code in the accumulator.
;
; 5/ Previously the BURST load mechanism caused open disk channels
; to be flushed. This has been corrected and now preserves open
; user channels as the C/64 LOAD had (e.g. chaining programs).
; Note however that BOOT loads will cause all open files for
; the given device to be closed (see CLOSE_ALL note below).
;
; 6/ BURST must UNLISTEN the 1571 when a break occurs (STOP key)
; to signal the drive to abort the operation. Previously the
; drive stayed in its burst routine waiting to send the next
; block of data. This fix will prompt the drive to abort too.
;
; 7/ The DMA controller routine (for RAMDISK) has been modified to
; meet the latest RAMDISK specification.
;
; 8/ A new Kernal JUMP TABLE entry has been created for an all new
; Kernal subroutine, CLOSE_ALL. Unlike CLALL, which simply
; cleared the LAT, FAT, SAT tables and restored the default I/O
; devices without properly closing files, CLOSE_ALL is passed a
; device number (fa) and properly closes ALL open files on that
; device. If that device was the current I/O device, only then
; will CLOSE_ALL restore the appropriate default device. This
; new jump vector is located at $FF4A.
;
; 9/ The Kernal IOINIT routine will recognize 8563-R8 & initialize
; register #25 (horz. smooth scroll) to $47 per 8563 spec mods.
; Previously this register was initialized to $40. Note that
; the lower 3 bits of the 8563 status register will return the
; revision level of the 8563 part (0=R7, 1=R8, etc.)
;
;
; The following changes have been made to the CHARACTER ROM:
;
; 1/ The hardware now supports an 8K byte character ROM. The lower
; 4K contains the C/64 character set (P/N 901225-01), and the
; upper 4K contains the C/128 character set (P/N 315010-03).
; In domestic systems the switching mechanism is the /64-128
; MMU signal and is therefore transparent to the user. It has
; been proposed that international units replace one of the 4K
; character sets with their particular national character set
; and utilize the CAPS_LOCK key to manually switch sets.
.page
.subttl RELEASE NOTES: BETA-8 04/15/85
; THE FOLLOWING MODIFICATIONS HAVE BEEN MADE TO THE BETA-7 CODE TO CREATE THE
; BETA-8 VERSION RELEASED ON 04/15/85. THE BETA-8 RELEASE IS A PRE-PRODUCTION
; VERSION INTENDED FOR SYSTEM TEST AND EVALUATION AND PRELIMINARY APPLICATION
; SOFTWARE DEVELOPMENT ONLY.
;
; **************************************************************
; * PENDING SYSTEM TEST, THIS SHALL BE THE FINAL BETA RELEASE. *
; * ANY PROBLEMS OR NEEDS *MUST* BE REPORTED TO SYSTEM *
; * ENGINEERING BEFORE 04/19/85 FOR RESOLUTION AND INCLUSION *
; * INTO THE PRODUCTION ROM RELEASE! *
; **************************************************************
;
;
;
;
; The following changes have been made to the MONITOR:
;
; 1/ The Monitor DOS interface now uses the reserved logical
; channel number 0, and no longer transmits a 'close' to the
; disk. Previously it used channel 1 (which was often in use by
; the user) and performed a full 'close' (which caused the disk
; to close ALL open files).
;
; 2/ The Monitor DOS interface no longer allows access to unit
; numbers 3 and 31. They are illegal serial bus devices.
;
; 3/ The Monitor MEMORY DUMP facility correctly displays the full
; CBM ASCII character set. Previously the ASCII was masked to
; 7 bits.
;
; The following changes have been made to the KERNAL:
;
; 1/ The Kernal BOOT routine no longer transmits a 'close' to the
; disk. The disk status will now reflect the last I/O operation
; status similar to a 'load' operation. A reduntant attempt to
; transmit the disk warm start (UI) command was removed.
;
; 2/ The Kernal GO64 routine now insures that the 6510 port /HIRAM
; and /LORAM lines are set HIGH before entering C64 mode.
; Previously entering C64 mode (where /HIRAM and /LORAM select
; RAM and ROM memory configurations) from a C128 graphics mode
; (where /HIRAM and /LORAM select VIC and processor color
; nybble banks) would crash the C64 system because its system
; ROM was not in context and entry was not via hardware reset.
;
;
; The following changes have been made to the EDITOR:
;
; 1/ The IRQ screen handler has been modified to accommodate 2 MHz
; split screen operation. Previously the split screen operation
; in 2 MHz mode caused the IRQ keyscan to be skipped.
;
; 2/ A difference between the C64 and C128 screen editors has been
; noted but will NOT BE CHANGED because the same anomaly occurs
; with the windowing editor on other products. The effect is
; illustrated by the following BASIC operation:
;
; 10 OPEN 1,0 :REM OPEN CHANNEL TO KEYBOARD
; 20 INPUT#1,A$ :REM INPUT A LINE
; 30 PRINT A$ :REM DISPLAY LINE INPUT
;
; The PRINT A$ will overwrite the last character of the string
; entered in response to the 'INPUT'. The C/64 editor does not
; overwrite; in fact there are extra spaces found between the
; input and output strings. Any requests to change this should
; be sent as soon as possible!
;
.page
.subttl RELEASE NOTES: BETA-8 04/15/85
; THE FOLLOWING MODIFICATIONS HAVE BEEN MADE TO THE BETA-8 CODE TO CREATE THE
; BETA-9 VERSION RELEASED ON 04/19/85. THE BETA-8 RELEASE IS A PRE-PRODUCTION
; VERSION INTENDED FOR SYSTEM TEST AND EVALUATION AND PRELIMINARY APPLICATION
; SOFTWARE DEVELOPMENT ONLY.
;
; **************************************************************
; * PENDING SYSTEM TEST, THIS SHALL BE THE FINAL BETA RELEASE. *
; **************************************************************
;
;
; The following changes have been made to the KERNAL:
;
; 1/ The Kernal TAPE handler previously returned the wrong error
; code upon encountering the EOT. This has been fixed to report
; 'file not found'.
;
; The following changes have been made to the EDITOR:
;
; 1/ DOCUMENTATION ONLY: Please note that the Editor does not
; factor in 'VM1' when utilizing 'LDTBL1'. This means that the
; IRQ screen handler WILL move the screen per VM1 but that all
; printing will continue to update the screen at $400. Because
; LDTBL1 is in ROM it cannot be modified as in the C/64. Any
; requests to change this mechanism must be made NOW.
;
; 2/ The Editor now includes the National keyboard lookup tables
; and a National-to-ASCII conversion table. While there is no
; National keyboard driver code in ROM, it is expected that the
; inclusion of these tables will provide sufficient support for
; RAM or Function Cartridge based drivers. AN APPLICATION NOTE
; WILL BE FORTHCOMING TO DETAIL THE IMPLEMENTATION OF A DRIVER.
;
; The following changes reference ALL sections of code:
;
; 1/ The three (3) C/128 ROMs now contain a revision byte and a
; byte reserved for 'rounding' the checksum. The locations are
; given below. Please note that the 'revision' byte described
; here refers to the individual ROM contents, NOT to the
; software (e.g.: the KERNAL software revision byte is $FF80).
;
; LOW (U33): $7FFE - REVISION BYTE
; $7FFF - CHECKSUM ADJUST
;
; MID (U34): $BFFE - REVISION BYTE
; $BFFF - CHECKSUM ADJUST
;
; HIGH (U35): $CFFE - REVISION BYTE
; $CFFF - CHECKSUM ADJUST
;
; The 8-bit checksum is calculated over the ROM's contents by
; adding the sequential bytes for each 16KB ROM, discarding any
; carry between additions. Thus the sum of each ROM should be
; equal to the MSB of its starting address (e.g.: LO=$40, MID=
; $80, HI=$C0). Please note the checksum of the HI (U35) ROM
; does NOT include the CP/M portion (address range $D000-$DFFF)
; as this section of ROM cannot be read by the host processor.
.page
.subttl RELEASE NOTES: 318020-03 05/08/85
; THE FOLLOWING MODIFICATIONS HAVE BEEN MADE TO THE 318020-02 CODE TO CREATE
; THE 318020-03 VERSION RELEASED ON 05/08/85. THIS RELEASE IS MADE TO CREATE
; MASKED ROMS FOR PRODUCTION.
;
;
;
; The following changes have been made to the KERNAL:
;
; 1/ Previously the IOINIT routine improperly initialized PAL and
; 'R8' versions of the 8563 80-column display device. This has
; been corrected. Testing of these modes has been very limited.
;
; 2/ Previously the fast SERIAL routine SPINP forced the 50/60 Hz
; flag on D1CRA low (60Hz). This has been corrected to preserve
; the status of this line.
;
; 3/ A new jump table entry has been created for the fast SERIAL
; routines SPINP and SPOUT at $FF47. Users must enter with the
; carry flag clear to select SPINP and carry flag set for SPOUT
;
; 4/ Previously the SERIAL routine DISK_CLI enabled IRQ's before
; restoring the sprite enable register. This caused the BASIC
; IRQ sprite handler, under stress, to lose sprites. This has
; been corrected. The fix required a change as well to the TAPE
; routine TNIF which shared portions of the DISK_CLI routine.
; The shared code has been eliminated by copying the necessary
; portions to TNIF.
;
; 5/ Previously the Kernal RAM code for JMPFAR called the GETCFG
; ROM code directly. To preserve code modularity, the direct
; address was replaced by the Kernal jump table address.
;
; The following changes have been made to the EDITOR:
;
; 1/ Due to remaining problems with the 8563 block fill function,
; the so-called KLUDGE code has again been added to the CLRLIN
; routine. This patch will clear up the occasional characters
; seen on the 80-column text screen after a SCNCLR, and will be
; valid even after the 8563 bug is fixed. Two (2) absolute RAM
; variables were added to DECLARE without disturbing anything.
;
; 2/ Previously it was not possible to move the VIC 40-column text
; screen and still utilize the screen editor because LDTB1 is
; is ROM based (unlke the C64 which is RAM based). To provide
; this capability a new variable, LDTB1_SA has been created and
; may be used in conjunction with the variable VM1 to move the
; VIC text screen. VM1 should be written instead of VIC reg #24
; (default value $14) and LDTB1_SA loaded with the high byte of
; the new screen location (default value $04). Please note that
; the placement of VIC video matrices is limited by the image
; of the character ROM VIC sees at $1000-$1FFF and the presence
; of ROM beginning at $4000 in the system's memory map. This
; change affected Editor routines SCRSET and MOVLIN which used
; LDTB1 directly, and CINT which now initializes LDTB1_SA.
;
; 3/ There was a problem with windows one (1) character wide in 80
; column mode which affected areas outside the window. It was
; been corrected by testing for this special case in CLRL80.
;
; 4/ The NATIONAL keyboard lookup tables and the National-to-ASCII
; conversion table have been removed. They were found to be
; unnecessary for Foreign-language systems and insufficent for
; other applications. AN APPLICATION NOTE IS FORTHCOMING.
;
; 5/ The handling of 8563s special attributes (ALT, RVS, UNDERLINE
; and FLASH) has been made more consistant throughout. The
; BLANK and CLRLN routines now strip all attributes except ALT.
; (this will affect, for example, INSERT and DELETE). Various
; other routines now preserve the RVS bit (not to be confused
; with reverse-field mode; this hardware bit is unused by the
; system but can be set by the user).
;
; 6/ A single <ESCAPE> no longer cancels all editor modes (e.g.
; quote, insert, underline, flash & reverse). A double <ESCAPE>
; or <ESCAPE>-O is now required.
;
.page
.subttl RELEASE NOTES: 318018-04, 318019-04, 318020-05 11/07/86
;
; C128 ROM RELEASE NOTES: 318018-04, 318019-04, 318020-05
; 318022-02, 318023-02
;
;
; THE FOLLOWING MODIFICATIONS HAVE BEEN MADE TO THE 318018-02, 318019-02, AND
; 318020-03 CODE TO CREATE A NEW ROM SET RELEASED ON 11/07/86. THIS RELEASE
; IS MADE TO CREATE MASKED ROMS FOR PRODUCTION. THESE ROMS ARE TO BE USED AS
; A SET, REPLACING THE PREVIOUS ROM SET ENTIRELY. THEY ARE NOT TO BE MIXED.
; THIS RELEASE IS MADE SIMULTANEOUSLY IN THE FORM OF 16KB AND 32KB ROMS, FOR
; USE IN THE FOLLOWING SYSTEMS: C128, C128D, C128CR, C128DCR, AS APPROPRIATE.
;
;
;
; PLEASE NOTE: AN 11/18/85 ENGINEERING RELEASE OF A C128 ROM SET WAS NEVER
; RELEASED TO PRODUCTION, AND ACCOUNTS FOR THE APPARENT JUMP IN ROM REVISION
; NUMBERS. THE FOLLOWING INFORMATION INCLUDES THOSE DIFFERENCES AS WELL.
;
;
;
; The following information represents a filtered condensation of
; all known problems, complaints, and suggestions that pertain to
; the C/128 system software to date (exclusive of CP/M). The
; current ("original" ROMs) system software consists of:
;
;
;
;
; 1. Part No. 318018-02 --> BASIC LOW ($4000-$7FFF)
;
; 2. Part No. 318019-02 --> BASIC HIGH, MONITOR ($8000-$BFFF)
;
; 3. Part No. 318020-03 --> EDITOR, KERNEL, CP/M ($C000-$FFFF)
;
; 4. Part No. 315078-02 --> DIN ED, KERNEL, CP/M ($C000-$FFFF)
;
; 5. Part No. 318022-01 --> BASIC, MONITOR ($4000-$BFFF)
; (includes 1+2 above)
;
; 6. Part No. 318023-01 --> ED, KERN, CP/M, C64 ($C000-$FFFF)
; (includes 3+4 above)
;
;
;
; Each 16KB ROM block contains a small patch area for changes, and
; all patches described below have been accomplished such that any
; particular change will never affect more than one ROM. Similarly
; each ROM contains a revision status byte (at $7FFE, $BFFE, and
; $CFFE) which software can test to determine the version of the
; host system. The "original" ROMs contain $00 in these locations
; and the "update" ROMs described herein contain $01. Each ROM
; has had several changes, as summarized on the following pages.
;
;
;
; Part Number 318018-04 --> BASIC LOW ($4000-$7FFF)
;
; 1. LIST and DELETE commands. Previously they did not report as
; errors certain non-numeric characters passed as arguments,
; such as 'LIST A'. This has been corrected totally in-line
; by adjusting an erroneous relative branch in the 'RANGE'
; subroutine.
;
; 2. CIRCLE command. Previously an unspecified Y-radius
; defaulted to the X-radius (as it should), but the X-radius
; value had already been scaled for the X-axis and not the
; Y-axis. This has been corrected totally in-line by scaling
; the radii after the defaults have been established.
;
; 3. RS-232 STatus. Previously accessing ST after RS-232 I/O
; resulted in an incorrect status being returned from, and a
; zero written to, location $10A14, possibly corrupting the
; BASIC variable area. This was a result of BASIC calling the
; Kernel routine 'READSS' with the incorrect RAM bank in
; context. This has been corrected totally in-line by
; substituting the correct BASIC subroutine call.
;
; 4. CHAR command. Previously using CHAR with the 80-column text
; screen (GRAPHIC mode 5) resulted in RAM corruption at
; locations $D600 and $D601 of RAM bank 0 (the BASIC text
; bank) due to BASIC calling the Editor PLOT routine without
; the I/O block in context. This has been corrected utilizing
; two patch subroutines.
;
; 5. RENUMBER command. Previously the pass 2 routine, which was
; to pre-scan BASIC text and report 'out of memory' errors
; prior to actually changing anything, was seriously flawed.
; This has been corrected utilizing a patch subroutine.
;
; 6. DELETE command. Previously did not limit-check itself when
; moving down BASIC text, therefore it was possible to crash
; when DELETEing lines at or near the top of memory (near the
; MMU configuration registers). This has been corrected
;+ utilizing a patch subroutine. Also, DELETE previously
;+ exited to MAIN via 'JMP', effectively ending the evaluation
;+ of the current command string. This has been corrected by
;+ substituting an 'RTS', allowing direct commands like
;+ 'DELETE 10: PRINT"DELETED LINE 10"' to work correctly.
;
;+ 7. PLAY command. Previously the SID frequency tables were not
;+ exactly NTSC concert pitch. Also, there was no provision for
;+ adjusting the frequency for PAL systems. This has been
;+ corrected by changing the (NTSC) frequency tables, creating
;+ new PAL tables, and utilizing patch code to select from the
;+ appropriate table as determined by the Kernel PAL_NTSC flag.
;
;+ 8. The BASIC ERROR handler previously failed to clear pending
;+ string temporaries when an error was TRAPed. This has been
;+ corrected via patch code to reset TEMPT to TEMPST.
;
;+ 9. The powerup copyright notice has been updated to 1986, which
;+ will serve as an immediate visual indication of the ROM
;+ update status. Also, a new notice has been placed at $7FC0.
;
; 10. The ROM signature at location $7FFC and $7FFD (lo/hi) is
; $8DEF. (new since last release).
;
; 11. The ROM revision byte at location $7FFE, has incremented
; from $00 to $01.
;
; 12. The ROM checksum byte at location $7FFF, has changed from
; $4C to $61.
;
;
; Part Number 318019-04 --> BASIC HIGH, MONITOR ($8000-$BFFF)
;
; 13. RSPRITE and RSPPOS functions. Previously they accepted as
; parameters sprite numbers in the range 1-16, which is
; incorrect. This has been corrected totally in-line by
; limiting the range check to 1-8, and reporting an illegal
; quantity error for sprite numbers outside this range.
;
; 14. PRINT USING command. Previously there was an anomaly
; involving the use of floating money symbols ('$') and
; commas. The command 'PRINT USING "#,##$.##"; 123.45', for
; example, resulted in the output '$,123.45', which is
; incorrect. This has been fixed utilizing a patch subroutine
; which checks specifically for the '$,' occurrence and
; substitutes a '_$' ('_' = fill character) whenever found.
;
; 15. Relative Coordinates for all graphic commands (except
; MOVSPR) were incorrectly processed. The problem was
; apparent when negative relative coordinates were used, which
; resulted in an illegal quantity error. This has been
; corrected totally in-line by substituting a different
; subroutine call to pre-existing code. This change affects
; the BASIC commands LOCATE, DRAW, PAINT, BOX, CIRCLE, GSHAPE,
; and SSHAPE. This change also allows negative absolute
; coordinates to be accepted (previously they resulted in an
; illegal quantity error), although the legal range remains a
; 16-bit value: 0-65535 (unsigned) or -32768 to 32767
; (signed: i.e., -1 is equivalent to 65535).
;
; 16. DOPEN and APPEND commands. Previously it was possible to
; open two or more disk channels with the same logical file
; number without incurring an error report. This has been
; corrected totally in-line.
;
;+ 17. MATH package. An original bug fix (ref: double zero bug)
;+ to the (F)MULT routine has been found to result in small
;+ errors (such as 2^15 = 32768.0001). This has been corrected
;+ totally in line by fixing the original (dbl-0) problem in a
;+ different way.
;
;+ 18. A copyright notice has been placed, starting at $BFC0.
;
; 19. The ROM signature at location $BFFC and $BFFD (lo/hi) is
; $CDC8. (new since last release).
;
; 20. The ROM revision byte at location $BFFE, has incremented
; from $00 to $01.
;
; 21. The ROM checksum byte at location $BFFF, has changed from
; $3A to $C5.
;
;
; Part number 318020-05 --> EDITOR, KERNEL, CP/M ($C000-$FFFF)
;
; 22. CAPS LOCK Q. Previously an error in a key matrix decode
; table caused a lower-case 'Q' to be passed when the keyboard
; is in CAPS LOCK mode. The table has been corrected by
; substituting the correct value for upper-case 'Q'.
;
;+ 23. FUNCTION KEYs. Previously the funcion key handler, part of
;+ the SCNKEY routine at CKIT2, failed to detect a funtion key
;+ string pending. This has been corrected via patch routine,
;+ which will ignore new function key depressions until the
;+ string in progress has been output (i.e., KYNDX = 0). Also,
;+ DOPFKY now exits via SCNRTS, instead of simply RTSing.
;
; 24. IOINIT system initialization. Previously the RS-232
; pseudo-6551 registers were not initialized because these
; values are expected to be given by the user whenever RS-232
; channels are OPENed. Apparently many C64 users have taken
; advantage of the fact the C64 'happened' to clear these
; locations and fail to specify critical parameters. These
; RS-232 registers are now initialized to default to: no
; parity, full duplex, 3-line, 1-stop bit, 8-bit words and 300
; baud, via a patch subroutine.
;
; 25. IOINIT PAL system initialization. Adjustments have been
; made to the 8563 initialization values for PAL systems. The
; PAL horizontal total (register 0) changes from $7E to $7F.
; The PAL vertical total (register 4) changes from $27 to $26.
; These changes shift the cycle time from 20.320us to
; 20.032us. The patch required a patch subroutine, as well as
; a change to VDCTBL.
;
; 26. BASIN system call. Previously attempting input from a
; logical channel to the screen (e.g., via INPUT#) resulted in
; line too long errors. This has been corrected utilizing a
; subroutine patch to preserve bit-7 of CRSW, which serves as
; a flag to the Editor that a (pseudo) end-of-line has been
;+ reached. Also, TBLX is copied to LINTMP to correctly locate
;+ the current cursor line for the Editor. Please note that
;+ switching between the 40 and 80-column text screens, opening
;+ and closing windows, or clearing text screens can confuse
;+ logical screen channels. The Editor variable LINTMP ($A30)
;+ is a global, not local, variable as it should have been.
;+ Users can POKE LINTMP with the logical screen line number
;+ before INPUT#'s as a work-around.
;
; 27. OPEN RS-232 system call. Previously it was possible to
; receive a carry-set status, normally indicating a error,
; when no error existed after OPENing an RS-232 channel. This
; has been corrected totally in-line by a modification to the
; code which checks for the proper X-line hardware states.
;
; 28. LOAD system call. Previously the normal (a.k.a. SLOW) load
; mechanism did not preserve the starting address of any
; LOADs, which made the BASIC 'BOOT "file"' command form
; malfunction unpredictably. This is apparent only when used
; with 1541 drives. This has been corrected via a patch
; subroutine, which saves the starting address of all LOADed
; files at SAL and SAH, the same place the fast (a.k.a.
; BURST) load mechanism does.
;
; 29. DMA system call. Previously the Kernel forced the I/O block
; into the user's memory configuration at all times, which is
; no longer necessary and, in fact, seriously limits the
; functionality of the RAM expansion cartridge. This has been
; corrected by a ROM patch routine, which affects all Kernel
; DMA system calls as well as the BASIC FETCH, STASH, and SWAP
;+ commands. Also, previously it was possible for an IRQ to
;+ occur between the 'arm DMA' and 'trigger DMA' sequences,
;+ resulting in a DMA operation with the system configuration
;+ in context regardless of desired configuration. This has
;+ been corrected by adding 'PHP/SEI...PLP' instructions around
;+ the JSR to DMA RAM code at $3F0. Applications using the DMA
;+ RAM code at $3F0 should do likewise. Finally, in this patch
;+ changes were made to enable DMA operations to all RAM banks
;+ by correctly using the VIC bank pointer found in the MMU RAM
;+ configuration register ($D506, VA16=bit-6 and VA17=bit-7).
;+ Applications using the Kernel routine at $FF50 will inherit
;+ these changes automatically. Please note that NMI interrupts
;+ can screw-up DMA operations, as they cannot be masked.
;
;+ 30. A copyright notice has been placed, starting at $CFC0.
;
;+ 31. The ROM location $CFF8 is reserved for national character
;+ ROM checksums. This does not apply to US ROMs, which contain
;+ $FF here. (new since last release).
;
; 32. The ROM location $CFF9 is now reserved for country codes.
; The US ROMs contain $FF here. (new since last release).
;
; 33. The ROM location $CFFA and $CFFB (lo/hi) contain the
; national character set signature. This does not apply to US
; ROMs, which contain $FFFF here. (new since last release).
;
; 34. The ROM signature at location $CFFC and $CFFD (lo/hi) is
; $8F76. (new since last release).
;
; 35. The ROM revision byte at location $CFFE, has incremented
; from $00 to $01.
;
; 36. The ROM checksum byte at location $CFFF, has changed from
; $C3 to $3C.
;
; 37. The Kernel revision byte at location $FF80 has incremented
; from $00 to $01.
;
;
; Part number 315078-03 --> DIN ED, KERNEL, CP/M ($C000-$FFFF)
;
;+ There have been no revisions to the national portions of the
;+ many national Kernel/Editor ROMs. All revisions described above
;+ for the US version have also been made to the national versions.
;
;
;+ 38. A copyright notice has been placed, starting at $CFC0.
;
;+ 39. The ROM location $CFF8 is reserved for national character
;+ ROM checksums. The German/Austrian (DIN) ROMs contain a $FF
;+ here (that really is the checksum!).
;
; 40. The ROM location $CFF9 is now reserved for country codes.
; The German/Austrian (DIN) ROMs contain $00 here. US ROMs
; contain $FF here.
;
; 41. The ROM location $CFFA and $CFFB (lo/hi) contain the
; national character set signature. The DIN ROMs contain
; $91F3 here. This is unused ($FFFF) for US ROMs.
;
; 42. The ROM signature at location $CFFC and $CFFD (lo/hi) is
; $EA3B.
;
; 43. The ROM revision byte at location $CFFE, has incremented
; from $00 to $01.
;
; 44. The ROM checksum byte at location $CFFF, has changed from
; $C3 to $4C.
;
; 45. The Kernel revision byte at location $FF80 has incremented
; from $00 to $01.
;
;
; C/128 developer and documentation notes
;
; There were quite a few items that, for one reason or another, I
; categorized as un-fixable as the fix would compromise
; compatibility or be too radical given the work-around or
; relative severity of the problem. They are included here to
; document them along with any implications, work-arounds, etc.
;
; 1. DMA interface. It should also be noted that DMA hardware is
; unreliable at 2MHz clock speeds and consequently the user
; must insure 1MHz (SLOW) mode is used before any DMA
;+ operations are performed. NMI interrupts will also cause
;+ problems, and should be disabled or somehow avoided. RS-232
;+ operations use NMIs; the remote should be XOFFed or the
;+ channel disabled before DMA operations are performed.
;
; 2. IRQ handler. It is possible for the Kernel IRQ handler to
; perform a keyscan when the IRQ was not the Kernel's. While
; the fix is trivial, I did not include it because it might
; cause problems with existing software which may be taking
; advantage of the unintentional keyscans.
;
; 3. IRQ and NMI handlers. The Kernel forces the system bank
; into context before taking the RAM indirect vectors to the
; actual interrupt handler. Much flexibility can be added to
; the mechanism if the memory bank to be brought into context
; at interrupt time could be read from a variable instead of a
; ROM constant. I am reluctant to include this change because
; the RAM variable would have to be located in a previously
; 'free' location, which may be used by existing applications.
;
; 4. SAVE-to-disk. It is not possible to SAVE the last byte of
; any memory bank (e.g., RAM at $FFFF), because the SAVE
; routine requires you to specify the end of the area to be
; SAVEd as the ending address PLUS ONE ($FFFF+1 -> $0000).
; This is a problem found on all CBM 65xx systems.
;
; 5. SAVE-to-cassette. It is not possible to save the last page
; of any memory bank (e.g., RAM at $FF00-$FFFF) to tape. The
; tape handler hangs with the motor running until the user
; STOPs it. This is a problem found on all CBM 65xx systems
; except the Plus-4.
;
; 6. SAVE and LOAD. While program SAVEs correctly save the
; 16-bit starting address for future LOADs, the existing
; formats do not save the memory bank. This cannot be
; accommodated without the creation of special C128 program
; headers for disk and tape, which is undesirable and
; non-trivial.
;
; 7. STOP/RESET monitor entry. It is not possible to enter the
; Monitor directly via the STOP/RESET sequence from BASIC and
; then eXit back to BASIC without incurring a 'cold' BASIC
; initialization. The alternative, taking the BASIC 'warm'
; start route, would result in a system crash if BASIC had not
; been properly initialized and is therefore not a recommended
; fix. The work-around, assuming BASIC was running before
; STOP/RESET, is for the user to place the value $C1 into
; location $A04 (INITSTATUS) and then eXit.
;
; 8. Monitor 'H' (hunt) command. Because the editor performs
; various translations on data read from the screen, it is not
; possible to Hunt for certain CBM characters, such as pi and
; all reverse-field characters.
;
; 9. BOX command. BOX, because of the particular algorithm
; utilized, has a restricted range of -16384 to +16383
; (unscaled). The algorithm uses parameters that are twice
; those given for calculations and divides down the result
; before plotting. Thus it is possible for very large
; (unscaled) positive coordinates to result in large negative
; plots. The work-around is to use SCALEing, user
; range-checking, or avoid BOX and use either DRAW or CIRCLE
; commands instead.
;
; 10. RDOT, PEN, and RSPPOS functions. These BASIC functions
; return the current pixel cursor, lightpen and sprite
; positions, respectively, but the values they return are
; unSCALEd. Correcting this is trivial, but would result in
; problems for existing applications as well as being
; incompatible with C64 VSP and the PLUS-4.
;
; 11. FNDEF and GRAPHIC modes. After defining a user function,
; anything that results in program relocation must be avoided,
; such as GRAPHIC 'n' or GRAPHIC CLR. There is no fix
; planned. The work-around is a general rule: define GRAPHIC
; screens first (then SCALE), then define functions.
;
; 12. HELP command. HELP does not completely identify two type of
; syntax errors: 'RUN n' where 'n' is an undefined statement,
; and 'XXXX n' where 'XXXX' is any BASIC command which expects
; no argument. In the RUN case, TXTPTR had already been
; reset, but not OLDLIN, thus the correct line is displayed
; but without any highlighting. In the other case, because
; XEQCM exits via CHRGET, TXTPTR is incremented before the
; error is caught, resulting in part of the error not being
; highlighted. The fix would be too complex, especially
; considering the fact that the line containing the error is
; reported, albeit without highlighting.
;
; 13. GETKEY function. In the form 'GETKEY A', this BASIC
; function should wait until a numeric key is pressed, but
; certain non-numeric keys are accepted, such as 'E', colon,
; comma, period, '+', and '-'. The same anomaly occurs with
; 'GET A' for the same reason, as is a known CBM quirk.
;
; 14. PUDEF and PRINT USING commands. There is poor documentation
; of the fact that USING format fields such as "$,###.##", the
; leading '$' or commas are not interpreted per the PUDEFs as
; they are considered not part of the numeric field. This is
; found to occur in all versions of CBM BASIC 3.5 or higher.
;
; 15. RENUMBER command. Because of the routine's use of LINNUM to
; fetch from BASIC text the statement number of an object, it
; is possible to get a 'syntax error' when none existed within
; the RENUMBER command line itself. LINNUM itself reports any
; line numbers it reads that are out of range (>63999).
; Actually, you could use this to 'protect' a program from
; RENUMBERing. Also note that RENUMBER can not renumber line
; ranges. Therefore, LIST and DELETE statements within a
; program are NOT changed nor will they generate any errors.
;
; 16. OUT of MEMORY ERROR. It is possible to hang the system with
; this error from a running program when there is insufficient
; memory to contain the string representation of the original
; line number where the error occurred. One must STOP/RESTORE
; the system and type CLR to recover. This problem is found
; on most CBM 65xx systems.
;
;+ 17. BASIN ($FFCF) calls return <space><return> to <return> input
;+ (i.e., null input line). The culprit is an unnecessary BEQ
;+ test in LOOP4, which was left in for compatibility with the
;+ C64 and PLUS-4 editors, which behave in a similar manner.
;
;+ 18. MATH package. The binding of operators is such that unary
;+ minuses are evaluated after powers. This results in NO error
;+ when equations of the form (-4^.5) are evaluated (square
;+ root of a negative number). Of course, the error is given if
;+ the sign of the number is known when the power is applied
;+ (eg., X=-4 :PRINT X^.5). This is a known CBM quirk.
;
;+ 19. BASIC DOS commands, such as DOPEN and APPEND, limit
;+ filenames to 16 characters maximum. However, when the name
;+ string includes the filetype, such as "LONGLONGLONGLONG,P",
;+ BASIC reports a FILENAME TOO LONG error when, in fact, it is
;+ valid. This is a problem on all CBM systems > DOS 3.0.
;
;+ 20. DCLOSE accepts both LFN and UNIT parameters simultaneously,
;+ which it should not (they should be mutually exclusive). The
;+ LFN is always used, and the UNIT ignored, if both are given.
;
;+ 21. AUTO command puts next line number into the KEY buffer. It
;+ should probably just print it. This only causes a problem
;+ when used with function key strings containing <return>s.
;
; 22. INSERT Editor mode is not canceled by specific ESCAPE
; sequences which move the cursor. For example,
; <INS><INS><INS> <ESC>K <CRSR><CRSR><CRSR> illustrates that
; staying in INSERT mode after moving the cursor to the EOL is
; undesirable.
;
; 23. CIRCLE command in multicolor mode calculates default
; Y-radius based upon twice the X-radius. This is
; undesirable, but maintained to preserve compatibility among
; C64 VSP, PLUS-4, and C128.
;
;+ 24. TAPEs written in FAST mode are occasionally hard to read in
;+ SLOW mode. While I would not be surprised by this, I could
;+ not repeat the problem. The complaint comes from PAL/50Hz
;+ environments, but that may be the only place tapes are used!
;+ Users should take care to use tapes only in SLOW (1MHz) mode
;+ so that the tapes can be read on PETs, 8032s, C64s, etc.
;
;+ 25. VERIFY and DVERIFY will report 'verify error' when, in fact,
;+ the programs are identical. This occurs when the LOADed
;+ version of the BASIC program has been relocated since it was
;+ SAVEd, usually the result of the GRAPHIC command. In such
;+ cases, the MSB of line links differ, and (D)VERIFY fails.
;+ Try GRAPHIC <n|CLR> as appropriate and try again.
;
;
; The updated C/128 16KB ROM set bears the following part numbers. (The
; PCB socket number is valid only for original PCBs).
;
;
;
; 1. # 318018-04 --> BASIC LOW ($4000-$7FFF, U33) cksum= 9A40
;
; 2. # 318019-04 --> BASIC HIGH, MONITOR ($8000-$BFFF, U34) cksum= 6F80
;
; 3. # 318020-05 --> EDITOR, KERNEL, CP/M ($C000-$FFFF, U35) cksum= EEC4
;
; 4. # 315078-03 --> DIN ED, KERNEL, CP/M ($C000-$FFFF, U35) cksum= E4C4
;
;
;
; The new C/128 32KB ROM set bears the following part numbers.
;
;
;
; 1. # 318022-02 --> BASIC, MONITOR ($4000-$BFFF, U34) cksum= 09C0
;
; 2. # 318023-02 --> EDITOR, KERNEL, CP/M ($C000-$FFFF, U32) cksum= F324
;
; (Note that #2 above also contains the C/64 ROM code.)
;
;
;
;
; Fred Bowen 11/07/86