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
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
> Text.Changes List for Proto-Arfur.
Versions up to .078 are ancient history, man.
Version .078
============
Bugfix of environment string setting
Version .079
============
Converted to new error header
Top bit R0 error indicator support removed
Flags added to ReadLine : bit 31 R0 set => don't reflect chars not going
into the buffer
bit 30 set => any reflection done with char in R4
Heap robustification : checks that hpds, etc are in existing LogRam
New heap call : ExtendHeap, takes hpd in R1, size to change by in R3. Gives
two errors : BadExtend for wally changes (i.e. end moves outside existing
RAM), and ExcessiveShrink for end moved below area in use. The heap end has
been moved as far as possible in the second case. R3 returned as amount
actually changed by.
Default Sys$DateFormat set up to give string identical to Master TIME$.
Version .08
===========
Heap changes bugfixed
*con. monitortype added
Default screen on 512K Weed is 80K
If no keyboard (on ANY reset), it autoboots irrespective of other state.
Version .081
============
Overlong environment strings / errors don't overwrite your breaklist.
Service_Memory issued when AplWork size being changed : error given if
service is claimed. Service therefore means "are you using the AplWork?"
R2 contains the address of the currently active object, so winge if this
address is within your code.
Sources changed : conditional flags for native VDU, tube connected removed ;
it didn't stand a chance of working anyway if you changed either flag.
New Tim stuff : key up/down events, Con. monitortype does things.
SWI to set handlers with workspace added : handlers yet to change.
New fileswitch : buffering buggette fixed
Version .082
============
Configured sizes are now "PageSize" (8 or 32K) units.
Vset returns from module Init bugfixed.
VSets in RMTidy better
Bug in WriteI fixed (if an error occurred, it poked the stacked R14 with the
error pointer, rather than the stacked R0!)
Utility open file with winge has had open bits added (nodir,mustopen)
Major bash of handlers, also 3 escapes aborting removed.
SWI OS_ChangeEnvironment added : calls the envchange vector, default owner of
which sets the handlers. Give handler number in R0 (see hdr.envnumbers),
address in R1, workspace pointer in R2 (if used), buffer pointer in R3 (if
used). All old handler setting SWIs call this internally.
Version .083
============
Rationalised version number (cor).
Escape handler calling bugfix
Version .084
============
ValidateAddress acts sensibly for zero-length ranges.
New TimStuff
Kludge for now : workspace for error handler passed in in R0.
Help Commands lists *Modules and *Configure.
Assembly flag ; can assemble versions that convert exceptions into errors
with negative numbers
ValidateAddress allows the part of PhysRam that's in the screen.
Bugfixes of callback, breakpoint handler setting
*GO doesn't screw with your error handler, and supervisor doesn't reset the
world every time it panics.
New FileSwitch
Default PrinterType$4 variable
*Error and *Eval
Aliasing bugfix : *fred. doesn't match Alias$Fred
*Create bug fixed : *create jim now works
All files closed on all resets
Changes to CMOS reset : station ID unmolested (use magic Set transient!), and
Sync state is TOGGLED rather than set. Do R-power on twice if necessary!
Version .085
============
INKEY -256 bugfix
Version .09
===========
Version number rationalised!
Configure language added.
Configured language used, which meant changes to module entering :
this sets up the envstring from anything after the filename on RMRun,
or from the string pointed at by R2 on Enter.
New Timstuff, new fileswitch
Attempts to restore registers 10-12, lr on exceptions.
.09/a
=====
Bugfix of cmd tail on *Go.
Monotonically increasing time added, + SWI to read it.
*GOS starts up the Supervisor application, which lives in the utility module
.09/b
=====
Oscli Bugfix : *Volume127 not OK.
SWI Module doesn't enable interrupts for claim, release and describe ops
New Timstuff : should beep!
.09/c
=====
Bugfix of errors from exceptions
Ballsup in ReadLine removed!
Sam hack of Beep code to make it beep at least a bit.
*Unplug etc. added.
.09/d
=====
Beep on hard reset moved.
Sound CMOS set on CMOS reset : speaker 1, volume 7, channel 1.
Reducing RMA / sysheap updates hpd proply.
RMTidy tries to shrink RMA if tidy successful
.09/e : Hard reset beep moved a bit more.
.09/f : Silly screensizes converted to as close to 20K as poss
Optional 325 speed for a1 roms.
.09/g : Reset initialises timer0 so can use CMOS RAM read write.
.09/h : IOC Control set to FF on reset, new Tim code to do spastic things
with Break key.
.09/i : Nibble mode ROM speed removed from A1 version!
Better Tim code, new fileswitch
.09/j : RMReInit reports errors when inserting unplugged modules.
.09/k : Allowed to con. screensize 0-127, max screen actually set up 480K
Bug in Create fixed. Dump now allows tbs -> printable masking
Entry Envstring for RMRun fixed.
Entry to Supervisor always by RMEntering utilitymod.
ValidateAddress allow super stack
Net EX/CAT CMOS reset better
Status/configure when listing all goes into paged mode
.09/l : Soft break possible : FileSwitch tried and found Guilty of corrupting
system heap.
New Tim stuff, + weird country stuff in init.
.09/m : Basic SWI code doesn't change FIQ bit.
Can set dump area for default exception handlers.
*Help says "Help on keyword flurgle" instead of just flurgle.
Oscli terminators table adjusted.
.09/n : Minor help text changes
Fixed module command tails
New Tim doobries : no chars from Rodent buttons!
*Dump given offset=filesize winges "Outside File"
.09/o : New fileswitch ; *Copy.
*Shadow implemented
" :" changed to ":"
Paged mode in *Show
New TimStuff
.09/x : Timstuff
.09/y : Show pagemode bugfix
Country CMOS reset to 1
New fileswitch
.1 : Too much optimism and new Tim stuff
.11 : Keyboard code in reset fixed.
<65junk> will expand variable 65junk
Syntax/help messages tidied up
*Time, *Ignore added
New Tim stuff
Conversion SWIs added
Vectored SWIs (notably osbyte) can only affect C and V
.12 : Exception errors put PC on error msg.
*Shadow (no param) works, *ignore 3please faulted
.13 : Conversions point R1 at 0
.20 : New fileswitch
Language 3 set on CMOS wotsit
.21 : PrinterType$4 not set by MOS.
ChangeDynamicArea does nothing if attempt to extend a heap too far.
Also always leaves one page in AplWork
Enters configured doodad if error on autoboot.
Redundant bits removed.
.22 : Wierd terminator chars removed from ReadUnsniged, bit 29 flag added:
restrict range to 0..r2 (inclusive). Used in SWI naming stuff (won't
say "OK" to "Econet_&FFFFFFFF" etc.
Unknown SWI error gives SWI number.
.23 : CMOS reset TV is 0,1
Configured RMASize is amount free in RMA after mos initialisation.
Fixed tbs restrict in PrintCharInGSFormat
Errors propagated back in utilities from file closure.
Exception register dump area only reset on break.
.30 : V set return from Help_Is_Keyword code not ignored
Nude flieswitch
R12 to Help_Is_Keyword code correct
Bugfix of OS_ConvertNetStation : no explosion for bad net
New glue together
.31 : XOS_Heap(DescribeHeap) subs 4 off right value.
Setting Restrict Range to R2 flag in ReadUnsigned meant only base 10 OK
Default R12 for event/escape handlers = -1
XOS_Heap(ExtendBlock) by 0 works, valid block checking better.
First version multiple incarnations, podule support.
*Modules gives numbers
DFlynn/AThomas memory page/size evaluation used. MOS now pagesize
independant.
Can assemble a multiple keyboard version
*net: bye etc fixed.
SWI dispatch immeasurably improved
Module LookupName added
Bugfix of *Status <module keyword>
Module prefixes on oscli added: can specify command only comes from
(a particular incarnation of) a particular module
Bugfix of 239: wrch errors not being dealt with
New fileswitch; oscli also reads any secondary FS command table
Interrupts enabled in SWI name <-> number conversions
SWI PrettyPrint & SubstituteArgs
.32 New fileswitch
.33 New Tim stuff: SWIs Plot & WriteN.
Slight changes to allow service calls to be issued before modules are
initialised. Note may get modechange service before Service_Reset.
.34 Configured lang was out by 1.
SysHeap is shrunk to minimum, then configured extra size added (after
main initialisation). Should give about 16K extra on 305/310
Service_UKConfig conforms to (latest PRM) spec.
SubstituteArgs terminator corrected.
.35 Nude TimBits: optimised plots, etc.
ValidateAddress looks up screensize in VDU workspace
ChangeDynamic funkyfied
.36 ADev versions hurl abuse at 3 micron ARMs.
OS_Claim frees any links with same values first.
OS_AddToVector has old Claim semantics
INKEY-256 returns &A1
RMReInit clears CMOS of unpluggies before initialisation.
*ROMModules added as a replacement for *ROMS
EnumerateROM_Modules reason code for OS_Module
Bugfix of init strings on rmreinit.
Order of files changed: in * prompt, utilitymod should always be CAO
ChangeDynamic involving screen removes the cursors
SpriteSize is a 6-bit field in Status/Configure
Write0 shortened!
.37 VecSwi call shortened.
Stu did something to FileSwitch - R6 not wally for some entries.
.38 Obscuro bug in heap block extension - made RM manager free workspace
while checking block validity!
If ExtendBlock frees the whole block, it updates the returned block
pointer to -1 (i.e. really naff ptr).
RMClear doesn't kill podule modules.
New TMD stuff (some RS423 bugs fixed, faster this and that).
.39 New big version (new DeskTop, Wimp,...)
New block copy/move code
SpriteV added
Escape purging of sound now uses duration 1 (at request of DFlynn)
1.00 New RS423, FileSwitch, ADFS ...
CMOS reset sets 1987
V not cleared for CallAVector
Configure mode allows up to 23
PrettyPrint reads window width
1.01 Status/Configure deals better with Wrch errors.
Modules " (Tutu number output fixed).
Guess what; ReadUnsniged fixed AGAIN !!! ...
FileSwitch Opt 1,n bug fixed + {on} in Count
SWI WriteEnv invented for JGT use in debungler
New TimBits: fix embarrasment with lines, palette
1.10 Apparently this is a more aesthetically appealing version number.
Nuder TimBit: service_prereset lives!
1.11 OSGBPB 5,6,7 r6 bug fixed
MOS 2 micronised. Default callback shrank!
1.12 Dump code shortened + gives better error response for IsDir etc
Another (nastier) FileSwitch Opt 1,n bug fixed
Module handler returns proper w'space contents for LookUpName
Installing keyboard handler might work now says Tim
More FileSwitch changes. And yet more. Dump fixed.
1.20 another release, another number
1.21 Oscli whinges about *net#arf:thing etc.
*Modules counter doesn't wrap at 256 (and neither does *ROMModules)
Module init failure: doesn't free incarnation node twice, and
doesn't poo in the system heap.
RdArgs SWI added, NoSuchSWI error made non-dynamic
timbits/fileswitch
1.22 Added code to issue service call on RMA claim fail, as requested for
ADFS. Not actually assembled in though!
Module death can now be recursive
Header fields checked for validity: word-aligned where appropriate,
and within code length
CAO during startup=32M: allow overwriting of MOSROM modules.
Module SWI lookup much faster: enter into hash table on init
Added SWI OS_ReadRAMFsLimits
Looks for keypad * pressed on reset; drops into supervisor.
T,Delete and Copy power-on added.
List, Type use RdArgs (File/A,TabExpand/S), and expand tabs into
8 spaces.
Buggette in Module handler: recursive death may lead to operating
on a module with 0 incarnations.
SWI despatcher goes into caller's IRQ state; individual SWIs yet to be
inspected.
Supervisor doesn't reference ESCCNT or ESCFLG any more.
Vecnum=Swinum SWIs enable IRQs, except for Byte & Word which disable
them.
Module SWI enables IRQs explicitly except for heap ops.
1.23 SWI Mouse disables IRQs
Bugfix of Oscli: copes with buffer overflow in alias expansion
parm substitution.
1.24 Simon Smith and his Amazing Dancing IRQ Despatcher! New SWIs to claim
and release "devices" (i.e. bits in IOC interrupt registers A and B,
with the podule device the only one capable of having multiple owners).
EnumerateROMModules call (and so Rommodules) fixed.
Workspace reordered so can call handlers by LDMIA R12, {R12, PC}
*RMFaster added.
Link passed to module SWIs has correct IRQ state.
Interruptible (and also bug-fixed) heap manager incorporated.
New Tim stuff
1.25 Default IRQ2V clears the appropriate mask bit, returns.
SWI ModHand: ExtendBlock will return V set if appropriate.
Register dumping changed; may save right registers for FIQ/IRQ.
ValidateAddress fixed for screen memory.
New Timstuff; ECF origin settable.
1.26 MOS help messages tidied up.
Redirection errors better.
Alias terminators same as module command terminators.
Scratchspace sorting out: "bad number of parameters" error
constructed in an Oscli buffer.
Stack full error in Oscli has a sensible number; HelpBuffer
allocated on the stack.
Redirection handles made byte-sized.
MOS buffers rationalised; there's now an enormous amount of sharing.
SWI not known error contains SWI number if it wasnt done under
interrupt.
Backspace in readline = delete
1.27 Modules can refuse to initialise again.
Background FIQ handling done; Service_ClaimFIQ and Service_ReleaseFIQ
now come round immediately after Service_Reset, to set up the
default handler.
Stuart's HeapSort SWI added
SWI ExitAndDie added
SWIs to delink and relink application vectors added
Configure keyword MouseStep added; can also do nK on size fields.
ChangeDyn file improved; if cam map corrupted, necessary registers
pulled.
SWIs to allow user CAM-bashing; soft reset makes the application
space contiguous again.
ChangeEnvironment has a new reason code to allow setting of the
application space size.
Reset code masks CMOS; if top bit of CMOS gets set, used to be in
a state where lots of memory was allocated, but *status said little
was being requested.
SWI number->name conversion uses hashtab.
FE0-FFF initialisation removed.
1.28 TV configure syntax nitpicked.
New FileSwitch
1.29 Monotonically increasing time move to &10C; now a public location.
*key fixed; (re)uses EnvString
as does *show
1.30 *show prettified
FIQ downgrade highest priority interrupt.
MOS FIQ claim/release handling altered; now should cope with
background claims and/or releases occuring during a foreground
claim.
New extensions to callback; can now ask to be put on a vector.
Hacked source.pmf.key so it calls the callback vector (but NOT
the callback handler) in readc/inkey, if its bored.
ChangeDynamicArea falls at the first fence if an IRQ is threaded.
SWI despatch in RAM; 10% faster StoreHD.
Bugfix of SWI node release on module death; bugfix of error percolation
in new incarnations.
1.31 Supervisor printing of time taken ditched; bottom 32K, sysheap, cursor
user-write-protected.
Processor-speed dependant waits in NewReset now use Tim's magic
delay routine.
New TimStuff.
1.32 Bugfix of heap block extension.
Dynamic SWI not known built in better buffer.
Vector stasher always terminates the buffer (unless totally spastic
buffer size).
Improvement of heap block extension; will extend into preceding block
if poss. Also fix of code spotting interrupted heap ops (from 1.30).
PrettyPrint bugfix: hard space after tab.
Writeability of CAO (for WIMP) via changeenv.
Checks for keypad 0,1,2 on "power-on" resets, and sets monitor type
accordingly.
ReadBlockSize reason code added to heapman.
New fileswitch.
ROM speed slugged.
Bugfix of SetMemMapEntries, soft reset copes with many pages mapped
to the same address.
Defined R0-R3 corruptible for IRQ processes.
1.33 Cam bashing revisited; PPL kept in soft copy too.
ChangeDynamicArea also understands that the sysheap should be kept
protected too.
Dynamic "SWI not known" error fixed.
Doesn't go address exception if no kbd.
1.34 Another instruction removed from SWI despatch.
Times CPU and susses in spec ROM speed at reset
Old style handler setters don't poo on r12 value.
New fileswitch & timstuff: VDU output to sprites.
RAMfs space protected.
ReadDefaultHandler SWI added; pass number from hdr.env*, returns
R1=address, R2=workspace, R3=buffer. 0 means not relevant.
CAM soft copy size doubled; 8Mbyte may work.
1.35 New fileswitch.
1.36 MOS Default FIQ ownership fixed.
New Timstuff: window width obscurities, border stuff.
1.37 CAM bashing revisited for 8M; next bit up now included. Ta Jamie!
Bugfix of SubstituteArgs.
New Timstuff.
Service offered after ChangeDynamic has moved stuff.
When copying (if screen is being extended), ChangeDynamic copies
from a PhysRam address. The last page of application workspace is
copied into, so this MUST NOT be doubly mapped in MEMC.
Bugfix of RMtidy: checks CAO in RMA again.
1.38 SWI despatch understands that modules may have zero incarnations.
Ballsup of ReadDefault corrected.
1.39 ChangeDynamic overhauled: changing screensize cooperates better with
VDU drivers.
Setting of variables uses a stack buffer; scratchspace use across
sysheap extension a nono.
R0 in Service_Memory corrected. Always issues post-service, even if
error/nothing to move.
Monitortype bits expanded in status/configure.
r1 uncorrupted in OS_Exit for HMeekings.
1.40 Help matches against module titles as a postscan, giving keywords
recognised in the module.
Bottom 32K protection removed.
1.41 Soft break forces noprot on application space.
ChangeDynamicArea rejects out of range area numbers (instead of
crashing).
SWI Module does better when block extension has to try and extend the
RMA.
Exported HLINE takes colour information.
ROM unplug bits extended by using original Master frugal bits.
1.42 Setting of numeric variables fixed.
1.43 Default CMOS: NewADFSCMOS+2=1, DumpFormat=4.
Much molested prettyprint.
1.44 DrawV added.
1.45 New fileswitch.
PrettyPrint allows you to specify the MOS dictionary by setting r1=0.
Saved a word in CallVector (2 micron needed); stopped error gen if
vector number > NVectors
(defined r0-r3,r12 trashable on IRQ vectors)
1.46 Made IRQ vector claim force release of any previous entries.
SubstituteArgs: tbs r0 on entry => don't tack any unused part of the
line on the end.
New HeapSort which can shuffle data/build array pointers for you
Much munged help text.
BGet cache put into kernel so we save about 4us per call (saves
branches, temp register pushes). New FileSwitch
1.47 ROMModules fixed.
Added default handler for EconetV for Bruce
Minor speedups/space savers from Stu.
Fixed module name match: adfs. no longer matches adfs
1.48 Removed fast entry for Args/GBPB/File/FSControl as it was dangerous
new fileswitch that matches the above, so default vechandlers changed
*Quit migrated.
BPut cache migrated into kernel; removed VecFSSwi code
1.49 Fixed syntax message expansion.
1.50 ChangeDynamic has 3 = Sprite area
1.60 Richard III is dead
New serial stuff, apart from XON/XOFF
InstallKeyHandler with R0=1 => read keyboard id
1.61 Default osbyte vec has r12=OsbyteVars
Error returns for bad RMA heap claim/extend improved.
RMA block extension needing RMA extension fixed.
Doesn't corrupt end of physram on reset.
System heap not protected just because there are idiots instead of
programmers out there.
RMEnsure. SystemSpeed CMOS removed.
Noo really dangerous FoolSwatch
1.70 New title for release
1.71 Heap Extend wallyism removed.
System heap protection really removed.
Changed help for load/save/create etc. to keep DBell happy
New FileSwitch
CRC stored in pair of bytes at end of each ROM image
HeapSort now does B SLVK rather than LDR pc, =BranchToSwiExit
Exception handlers disable FIQ asap, shorter
Interrupt handling fix: DiscChanged on Archie became winnie IRQ!
Memory speed/MEMC1a flag (tbs) saved in RAM at &110.
CMOS resetting modo-fied a la Tim Caspell - R/T-power-on don't reset
harddiscs or country, or time; DEL/COPY zap harddiscs/country, but also
leave the time alone.
****** N. B. ********* harddiscs not being reset may lead to long waits the
first time a named disc is used: on current ADFSs, it will be an
infinite wait.
Added help on Break, Reset and PowerOn.
Module handler fudged a bit for modules with 0 incarnations; tidier
after somebody explodes in Initialisation/Finalisation.
"Module postfix given" now reads "'%' in module title".
Even newer FileSwitch
SYS OS_ReadSysInfo: give it 0 in R0, it returns what screensize is
set by CTRL-BREAK.
*type/list with only one param assume it's a filename.
Made memory speed a halfword; MEMC1A flag now bit 16.
Byte at &107 is an inconsistency semaphore; if non-zero at reset,
hard reset is forced. ALWAYS lower and raise with IRQ disabled.
New monitor type 2, compatible with UNIX monitor (mode 23 only).
Minisculely faster floodfill.
SWI OS_Confirm.
New multi-threadable FileSwitch (actually saved code and store !)
SKS fixed SWI OS_Confirm - it never cleared Z or C ! It also used wrong
exit criteria; &1B does not necessarily mean an escape condition exists
it also corrupted r3.
SKS fixed SWI OS_ReadSysInfo; it actually preserved r0!
1.72 New FileSwitch + loads of modules for yet another release
SWI ClipBox
Fixed FileSwitch howler
1.73 Help terminates on escape.
Autoboots if unrecognised keyboard too.
New FileSwitch
CAM remapping don't fiddle with the interrupt state; caller must think
this through themselves.
Default CMOS sez ArthurLib
Added periods to end of configuration help where they were missing
Moved more supervisor stuff into Super1
ReadLineV default owner gets called with suitable r12
Attempt to fix *-reset by delay loop
Calling of CallEvery events fixed; CallAfter/CallEvery SWIs don't
corrupt r1.
Made keyboard + printer buffers bigger, cut down Sound0,1,2,3,Speech
Reduced *-reset delay loop; moved Inter+IntKeyModules higher in list
Added ConvertFileSize+Fixed, CRC swi
IRQs off when entering callback handler.
1.75 Made a500 version for release
Fixed Copy use of WimpFreeMemory <-- NB. A500 versions are wrong
and set SlotSize 0. Sorry chaps.
1.76 should have been set AS SOON AS THE CODE WAS CHANGED (Stuart).
Extended RESET helptext. MouseStep all one word.
Mutter mutter. Explicitly reeenable irq before waiting for metrognome
change. Fixed power-on monitor type reconfigures
1.77 Status doesn't say 0K for screen.
Moved OPT code to kernel so *opt1 etc. valid. Shortened PrintR0Decimal
1.78 Made a500/a1 versions for release
Fixed conversion swi number to name to recognises new swis
New FileSwitch
After looking at the MOS irq device handlers, we'd better define r11
to be trashable on IRQ device handlers as well as r0-r3,r12! Also IRQ1
Default IRQ shorter - people on IRQ2V must preserve all except r12!
Defining r3 -> IOC for all IRQ handlers would be a very good move
Compressed SysComms, added MakeErrors in most of MOS + FileSwitch
FileSwitch now has path: stuff
Fixed default callback handler
Make redirection work with INKEY as well as RDCH
1.79 Bugfix ReadArgs; non-abbreviated keywords with aliases now work.
Made RMEnsure scan for digit after getting to 16th col in module
help string anyway; means we can rmensure the current clib.
*Error GSTranses the error string.
Callbacks will be processed before calling the error handler.
Put in new SLVK exits to save space
Nude fileswitch
Fixed SWI OS_GenerateEvent so can call from non-SVC mode.
Should we define r9 trashable on module SWI calls ???
Move V test into RAM SWI area
Default event vector call with appropriate r12
Faster BPut; we have deviant wp in top vector node
Made error handler shorter
New entry to PMFWrch, gets OsbyteVars up its' entry point
Removed error on setting callback handler if callback outstanding;
came in earlier in 1.79.
Improved 'RM not found' and RMEnsure errors.
SWI OS_ServiceCall instead of BL Issue_Service in reset.
1.80 Made image for release
1.81 Faster SWI OS_CRC by TMD
Padded OS_Confirm pointer shape, put the active point on the right.
Added an upcall handler.
Font cache at 30M; ValidateAddress modified.
Reason code 4 in ChangeDynamic = font cache
SWI OS_ReadDynamicArea.
Regard keyboards with ids 1-31 as the same.
Got a dozen spare vectors
1.82 *Time copes with oswrod errors
CallAVector internally preserves caller's interrupt state.
1.83 Fix to ChangeDynamic of font area.
Fixed PIRQ/PFIQ despatch for case when LSB of B CONT ~= 0
Also made the above faster/shorter
1.84 Fixed ChangeDynamic for sprite area; used to indirect into deep space
Also allow APL/BottomWS to shrink to 32K
Fixed ReadArgs to allow y and z in keywords.
Fixed code in heap block extension to satisfy comment.
Changed default Sys$DateFormat to "%24:%mi:%se %dy-%m3-%ce%yr"
Changed *Time to use OSWord 14,0
ExtendHeap was total garbage!
Make MODE 23 Unix compatible
1.85 ReadDynamicArea returns start of screen address
ChangeDynamic safe in conjunction with background heap ops
New FileSwitch
Moved Quit in command table to alphabetic place
Put a B in TimeCPU to make result more accurate
1.86 OS_ReleaseDeviceVector disables IRQs.
OS_AddCallBack disables IRQs earlier.
OS_Confirm mouse shape has no colour 2
Flushing the printer buffer makes it dormant if not a stream
CheckModeValid works properly with a user monitor type
A500 keyboard changed
Mouse buffer not flushed when new bounding box set, instead coords are
clipped against the current bounding box when read out of the buffer.
MODEs 21 (multisync) and 24 added
Set DomainId to 0 at reset
Made process_callback_chain disable IRQs round updating head^ so we
didn't lose callback vector requests when processing the chain; saved
2 instructions in AddCallback
Maximum configurable mode is the max mode the MOS implements
ChangeDynamic can do RAMFS if no files in it.
Heap Extension call rounds size to words correctly (always towards
zero).
Handlers zapped to defaults if app starts and exit handler belongs
to supervisor.
VGA modes (25..28) added
ChangedBox fixed for VDU 5 8x8 and 8x16 text
1.87 Hi-Res-Mono palette changed so PP field returned is &10 or &11 or &12
Also changed to return full black or full white for the RGB fields, not
red.
Bugfix in *Help; Escape while printing a module summary gave a random
error message.
Swapped silly name for another silly name.
1.88 Heap manager size call fix.
1.89 TimeCpu code was wrong (misordered merge of 2 8-bits) and had wrong
cutoff point for MEMC1a
1.90 New week number code - now conforms to BS4760 (supposedly)
New FileSwitch with file buffering fixed
2.00 (15 Sep 88)
Econet background FIQ problem fixed
NetStatus and Hourglass error handling improved
Kernel locks out background FIQ claims while the release service call
is in progress.
2.00 (03 Oct 88)
New FileSwitch - default run action for text files is now *Type
New NetFiler - version in previous MOS was out-of-date
2.00 (04 Oct 88)
New ADFS (Winnie podule problem fixed)
New TaskManager (doesn't claim null events when window not open)
Note: Change all occurrences of GoVec(2)
May also note that default vector owners can trash r10, r11 IFF
they claim the vector...
2.01 (02 Mar 89)
New version of ChangeDynamicArea which reenables interrupts.
Heap manager optimised in a few places.
Fixed bug in extend heap call (stack imbalance when returning
'No RAM for extending heap' error)
Heap manager extend block has improved IRQ latency.
2.01 (29 Mar 89)
Fixed "*%" (LDREQB not LDREQ).
2.01 (31 Mar 89)
Fixed OS_ReadArgs with a /E argument that evaluates to a string (always
used to give 'Buffer full' - also fixed 2 other bugs lurking in the
background, viz. did STRB of buffer addr assuming it was non-zero to
indicate a string, and didn't allow for length and type bytes in amount
free value.
2.01 (11 May 89)
Fixed OS_Word &15 reason code 4 (Read unbuffered mouse position)
- it used to generate undefined instruction trap due to stack mismatch.
Fixed OS_SWINumberToString with negative numbers.
2.01 (16 May 89)
Fixed ROMModules never saying 'Running'.
Fixed bug which occasionally left soft cursors on the screen.
2.01 (23 May 89)
Made OS_SpriteOp reentrant by pushing register dump area on stack.
Fixed sideways scroll by one 'byte' in MODEs 3 and 6.
2.01 (26 May 89)
Made OS_Byte &87 restore caller's IRQ state during call.
2.01 (30 May 89)
Made OS_Word &0E,0 enable IRQs during call.
Made OS_Word &15,0 enable IRQs during call.
2.01 (01 Jun 89)
Fixed incarnation names being terminated by 1st character.
Fixed *Unplug using address as extra terminator for module name.
2.01 (30 Jun 89)
Fixed podule IRQ despatcher corrupting R0 (prevented it from
correctly disabling the podule IRQ (or podule FIQ-as-IRQ) interrupt
if no handler)
Fixed rename incarnation bug.
2.01 (01 Sep 89)
Added help on LEN in *Help Eval.
2.01 (04 Sep 89)
Fixed bug in prefer incarnation which returned duff error pointers.
2.01 (06 Sep 89)
Changed BadTime error message from null string to
'Invalid time interval'
Fixed bug in CallAfter/Every which returned duff error pointers.
2.01 (11 Sep 89)
Fixed bug in AddCallBack which freed the wrong heap node.
2.01 (12 Sep 89)
Fixed bug in monadic plus/minus in EvaluateExpression (eg *Eval 50*-3)
2.01 (25 Sep 89)
Fixed bug in GSRead with quoted termination.
Fixed bug in keyboard driver (pressing Break (as escape) key when
keyboard buffer full did nothing)
2.01 (27 Sep 89)
Added SWI OS_ChangeRedirection
2.01 (06 Oct 89)
Optimised ConvertTo5Byte routine
2.01 (10 Oct 89)
Took new FileSwitch from Neil
2.01 (12 Oct 89)
Added SWI OS_RemoveCallBack
2.01 (19 Oct 89)
Added code to poke VIDC clock latch from bits 9 + 10 of control
register.
Modified FIFO request pointer algorithm to new one, also taking the
VIDC clock speed into account.
Changed INKEY-256 to &A2.
2.01 (23 Oct 89)
Changed memory sizing routine to cope with 12 and 16MBytes (but CAM map
still needs extending!).
Added keypad-4 reset to select monitor type 4 (super-VGA).
2.01 (26 Oct 89)
Put in variables for pointer to CAM map and number of CAM pages.
Recoded ChangeDyn and NewReset to set these up and use them.
CAM map is now either in low-down area for up to 8MBytes, or just above
IRQ stack for 12 or 16MBytes.
2.01 (27 Oct 89)
Added new VDU variable VIDCClockSpeed(172), the current VIDC clock
speed in kHz.
2.01 (02 Nov 89)
Added ModeExtend pixel rate specification interface.
2.01 (03 Nov 89)
Changed fast CLS code so it can cope with screens which aren't a
multiple of 256 bytes long (eg 800x600x4bpp).
2.01 (07 Nov 89)
Put in code to handle sync polarity programming (including ModeExtend
interface).
2.01 (08 Nov 89)
Fixed over-zealous fast CLS code.
Made a 4MBit EPROM image of this.
2.02 (09 Nov 89)
Changed start-up message to "RISC OS+" (removed flag Fix0).
Started test software integration.
2.02 (10 Nov 89)
Incorporated new screen modes from Paul Swindell.
2.02 (20 Nov 89)
Changed RS423 RXIRQ routine to process the 'serial input ignored'
OS_Byte flag after checking for XON/XOFF characters.
2.03 (21 Nov 89)
Changed !Draw and !Paint run file WimpSlots
2.04 (30 Nov 89)
Got new headers (including new Hdr.CMOS).
Removed initialisation of CatalogCMOS and ExamineCMOS in R-poweron.
Optimised PushModeInfoAnyMonitor so it doesn't set up VIDC stuff - this speeds
up SWI OS_ReadModeVariable enormously (this had slowed down due to VIDC tables
now being different for different monitor types).
2.04 (01 Dec 89)
Fixed OS_Word &07 (SOUND) needing a word-aligned control block.
Added SWI OS_FindMemMapEntries.
2.04 (04 Dec 89)
Changed SWI OS_FindMemMapEntries to new spec.
2.04 (07 Dec 89)
Modified SpriteLoad/SpriteMerge to use OS_File instead of OS_Find/OS_Args/OS_GBPB
- this means the Econet broadcast loader doesn't have to sit on SWI OS_SpriteOp.
2.05 (08 Feb 90)
Updated *Help PowerOn to mention 4 key on numeric keypad.
2.05 (01 Mar 90)
Put in code for handling squeezed modules. Bit 31 of init entry set
=> module is squeezed (bits 0.30 are the length of the module, at
the end of which are the unsqueeze information words.
Bit 31 of die entry set => module is not killed by RMClear (the
unsqueezed module image normally has this bit set).
2.05 (05 Mar 90)
Changed title back to "RISC OS" from "RISC OS+".
2.06 (27 Jun 90) (some intermediate versions missing)
New screen mode parameters - letter box modes for VGA
OS_Byte &7C and &7D changed to use SWI XOS_SetCallBack rather than
poking to the callback flag themselves (other bits are used in this
flag)
OS_ChangeDynamicArea now checks explicitly for areas trying to grow
beyond their maximum possible size (necessary for machines with
more than 4MBytes)
OS_ReadDynamicArea specification changed: if bit 7 of r0 set on
entry, then on exit r2 holds the maximum size of the area (and r0,
r1 are set up as per usual)
2.06 (16 Aug 90)
Fixed bug when configured screensize is less than 20K.
Started splitting off MEMC-specific stuff.
2.07 (08 Oct 90)
Fixed bug in OS_ReadVarVal when you test for presence of a variable with
R2<0 and R4=VarType_Expanded and the variable is a macro.
2.07 (30 Oct 90)
Made errors from unknown OS_Module call and unknown dynamic area in
OS_ChangeDynamicArea be "Unknown OS_Module call" and "Unknown
dynamic area" respectively rather than "" and "" respectively!
(They share the same error number).
2.08 (31 Oct 90)
Fixed three bugs in the *Help code, to do with correctly handling
errors from OS_WriteC (via OS_PrettyPrint).
2.08 (16 Nov 90)
Changed module handler to call Podule manager to translate podule
number into hardware address, rather than doing it itself.
OS_ValidateAddress now issues Service_ValidateAddress when area
appears to be invalid, so modules can add valid areas.
2.08 (19 Nov 90)
Fixed two bugs in RMEnsure; (a) no help string (b) help string shorter
than 16 chars
2.08 (27 Nov 90)
Added 3 more bytes of unplug CMOS
2.08 (28 Nov 90)
Divorced kernel from FileSwitch (BGET and BPUT now always go thru vector)
2.08 (08 Jan 91)
Fixed bug in OS_Module 11 (copied extra word, which could corrupt RMA)
2.08 (15 Jan 91)
Fixed bug in OS_Module 17 (corrupted R9 on exit)
Changed OS_Module 17 to cope with extension ROM modules (including directly executables).
2.08 (23 Jan 91)
Changed OS_Module 19 to cope with extension ROM modules
Added OS_Module 20 (same as 19 but also returns version number)
Fixed zero-effect bug in OS_Module dispatcher - if called with maxreason+1 it jumped off the end of the table -
into the unknown reason code routine!
SpriteOps 60 and 61 (switch output to sprite/mask) now issue Service_SwitchingOutputToSprite after switching
Issue Service_PostInit after all modules have been initialised
2.08 (01 Feb 91)
Added *RMInsert command
Finished off extension ROM code (hopefully!)
2.08 (06 Feb 91)
Changed keyboard code to only send LED changes when state has actually changed
2.08 (07 Feb 91)
Made hardware address of extension ROMs zero
2.08 (13 Feb 91)
Made OS_ReadSysInfo return screensize in step with real algorithm, ie a) ignore top bit of CMOS, b) if less than 20K,
add in extra pages until >= 20K
2.08 (01 Mar 91)
DoMicroDelay optimised by Ran Mokady
Started to put in Configure Mode/MonitorType/Sync Auto.
Conditionally remove parallel/serial drivers
Stopped *Configure allowing garbage on end of command, eg *Configure Delay 30 this is rubbish
Fixed *Status TV corrupting error pointer while printing "TV "
2.08 (04 Mar 91)
Merged Configure Mode and Configure WimpMode
Set 'DriversInKernel' flag for now
Added OS_ReadSysInfo(1) - return configured mode/wimpmode value (with Auto expanded)
Fixed OS_ReadSysInfo(>1) so it returns an error properly
2.08 (08 Mar 91)
Put in Configure PrinterBufferSize and support code
2.08 (11 Mar 91)
Used to change screen mode and print "RISC OS xK" before module initialisation. Now it changes screen mode before
(in case modules print during init), and afterwards (in case a module has provided a new screen mode), and then prints
the message.
Also after a monitor type reconfigure, selects default mode, not mode 0.
2.09 (12 Mar 91)
Fixed *Status MouseStep corrupting error pointer while printing "MouseStep ".
Fixed *Status corrupting error pointer from module code.
2.09 (15 Mar 91)
Put in IOEB and LC detection, and monitor lead type detection.
2.09 (19 Mar 91)
Completed monitor lead type interface.
Changed default Language to 4 (which is new Desktop module number).
2.09 (21 Mar 91)
Improved monitor lead detection of Hsync.
Made InitialiseROMModule return errors correctly.
2.09 (25 Mar 91)
Fixed bug in OS_SWINumberFromString to do with checking for valid module SWI chunk.
Fixed loads of other bugs in SWI OS_SWINumberFromString.
2.09 (26 Mar 91)
Fixed similar bugs in SWI OS_SWINumberToString.
2.11 (02 Apr 91)
RM - Changed time calls to use TerritoryManager calls to cope with local time.
OS_ConvertDateAndTime now calls Territory_ConvertDateAndTime
Changes made in: Source.PMF.osword and in Source.PMF.convdate.
2.11 (05 Apr 91)
Finished putting in 82C710 detection and configuration.
2.11 (12 Apr 91)
Put in support for new serial drivers.
2.11 (18 Apr 91)
Moved Service_PostInit to after filing system selection.
2.12 (26 Apr 91)
Put in SWI XPortable_Speed in RDCH/INKEY.
Made *Modules and *ROMModules check Escape flag.
2.12 (29 Apr 91)
TestSrc.* (Power-on Selftest)
- 82C710 changes addressing for FDD inuse light
- Validation of CMOS checksum
- Disables long memory test (blue phase) if Misc1CMOS bit 7 is set
NewReset
- Checks CMOS checksum on Power-on{delete/copy/r/t}. Forces complete (including Econet
station number) reset if checksum is corrupt.
- Initializes checksum if CMOS reinitialised.
Source.PMF.i2cutils
- Addition of ValChecksum and MakeChecksum
- 'Write' now maintains checksum byte. Checksum byte itself may be changed.
Hdr.A1
- Addition of ChecksumCMOS switch. FALSE removes checksum maintenance.
2.12 (02 May 91)
Changed default configured caps setting to NOCAPS.
2.12 (07 May 91)
CMOS checksum seed changed to 1 (CMOSxseed in Hdr.CMOS)
Selftest reports CMOS failure to user only if IIC fault occurs
Space reserved for processor test removed from TestSrc.Begin
2.13 (13 May 91)
Put in code to read unique ID
2.13 (20 May 91)
Added new characters to system font
2.13 (23 May 91)
Put in debugging for forced hard reset
Updated *Help Power-on
Fixed bug: if configured monitortype is unknown, uses naff VIDC parameters
2.14 (05 Jun 91)
Put in hex digit pairs for characters 80..8B, corrected location of new characters.
2.16 (12 Jul 91)
Changed default buffer flags for MOS buffers.
2.16 (18 Jul 91)
Changed default 82C710 configuration.
2.17 (26 Jul 91)
Adjusted Error_Code to place constructed error at GeneralMOSBuffer+4
rather than GeneralMOSBuffer to avoid clashes with default error
handler's use of GeneralMOSBuffer.
2.17 (26 Jul 91)
Adjusted default owner of error vector to copy the error text limited
to 252 characters, truncating if necessary. Avoids duff error blocks
destroying the system.
2.17 (26 Jul 91)
Fix display of error by default error handler - it used to not put
the error number out.
2.17 (30 Jul 91)
Changed the value of INKEY(-256) to &A3.
Modified DoInsertESC (OS_Byte 153) to only do special things on buffers 0 or 1.
2.17 (05 Aug 91)
Changed default CMOS settings.
2.18 (12 Aug 91)
OS_Byte(2,non-zero) code now checks if serial stream open before trying to open it again.
2.18 (13 Aug 91)
Changed Messages file: removed extra space in "Extn", added space on end of "EXTROM", "PODROM".
2.18 (16 Aug 91)
Added code to respond to service DeviceFSCloseRequest to close printer and serial streams.
2.18 (19 Aug 91)
Changed *Error to use MessageTrans error buffers. Avoids numerous clashes in GeneralMOSBuffer.
2.18 (23 Aug 91)
Made ErrorSemaphore a byte, not a word.
Added PortableFlag so that we don't issue more than one abortive SWI Portable_Speed.
Change RS423Vdu to not put bytes in the serial output buffer if
couldn't open serial stream, and also to report any error.
2.18 (30 Aug 91)
Change error "System variable not found" to "System variable 'blah' not found"
2.19 (05 Sep 91)
Change monitor type for superVGA monitor ID to 1 for LiteOn monitor.
2.19 (06 Sep 91)
Added an extra space on end of "Result: Result is %0, value :" message.
2.19 (10 Sep 91)
Fixed kernel messages not translated after soft reset bug.
2.19 (11 Sep 91)
Fixed Configure Mode Auto always using 27.
3.00 (25 Sep 91)
Amber release.
3.01 (07 Oct 91)
Fixed bug A-RO-9984 (requests to close kernel device streams didn't work).
Removed redundant non-functional code from DoOsbyteVar which tried to close the
serial output stream if WrchDests no longer included serial - this code is not
needed because the kernel now responds to the DeviceFSCloseRequest service.
Put in checks on OS_SpriteOp for SLoad/SMerge.
3.01 (15 Oct 91)
Fixed bug RP-0039 (OS_ChangeDynamicArea goes wrong when amount to change = &80000000).
Removed redundant copy of month names table from kernel.
3.01 (17 Oct 91)
Added DebugHeaps option to initialise used and freed blocks in heaps.
Changed OS_SpriteOp check: it used to check that offset to first
sprite = 16, but this is too stringent - there are silly files out
there that have extension words in the header - so now it just
checks that the offset is within the file.
3.01 (21 Oct 91)
Put in support for 82C711 (including OS_ReadSysInfo(3)).
3.03 (11 Nov 91)
Enhance system variables: increase allowable length from 256 to
16M; don't assign if going to overflow (found to be bad in
practice).
Split Arthur2 into system variable stuff (GSTrans etc,
OS_ConvertBinaryToDecimal, OS_ReadVarVal etc) and Utility, the
start of the utility module.
3.03 (13 Nov 91)
Change palette code to use PaletteV.
3.03 (18 Nov 91)
Added support for module to tell OS the real VIDC clock speed.
3.03 (22 Nov 91)
Added bit in CMOS that is set on a CMOS reset, and cleared on any other
reset.
3.03 (25 Nov 91)
Added new screen mode 22 for visually disabled - 768 x 288 x 4bpp, XEIG=0, YEIG=1,
for monitor types 0 and 1.
3.04 (20 Dec 91)
Fixed system SetVarVal to no GSTrans a string result from
EvaluateExpression (ie fix *SetEval). As a consequence a new
SetEval type allowed: VarType_LiteralString - string without
GSTransing.
3.04 (15 Jan 92)
Added OS_SetColour.
Switching output to a sprite takes into account Fg/BgPattern setup by OS_SetColour.
3.05 (21 Jan 92) lrust
Changed mouse buffer routines to BufferManager block transfer buffers to improve
interrupt latency.
3.05 (24 Jan 92) JRoach
Increase default mouse step from 2 to 3 as per ECR.
3.05 (28 Jan 92) LRust
Changed OS_Claim/Release code to restore IRQ state prior to releasing
vector node to system heap (conditional on IrqsInClaimRelease) to
improve interrupt latency.
3.05 (30 Jan 92) LRust
Changed ProcessTickEventChain to re-enable IRQ's while returning ticker nodes
to the system heap (conditional on TickIrqReenter). CallEvery/After events
are now processed last in centisecond clock interrupt.
3.06 (14 Feb 92) TDobson
Fixed dotted line bug (dotted lines with a dot pattern length > 32
which start outside the window where the number of undisplayed
pixels modulo the dot pattern length exceeds 32 go wrong).
3.06 (14 Feb 92) LRust
OK lets start with the easy ones! Fixed bug report RP-0387.
Change *Error syntax in 'HelpStrs' to show error number as optional.
3.06 (18 Feb 92) LRust
Fixed RP-1299 - stack imbalance for OS_Word &0F under error conditions
3.06 (19 Feb 92) TDobson
Added Welsh characters and swapped direction of hex number characters
in kernel system font.
3.06 (19 Feb 92) LRust
Fix RP-0617. TranslateError now preserves callers IRQ state
3.06 (20 Feb 92) JRoach
Install an index on system variables to speed their assignment and
access.
3.06 (20 Feb 92) LRust
Invoke Service_SyntaxError from OS_CLI if command syntax error
3.06 (26 Feb 92) LRust
Fix RP-0609 and RP-0370. Callback handler only entered if SVC stack is
empty. RTC day/months of 0 are forced to 1
3.07 (03 Mar 92) LRust
Setup of printer buffer uses internal CMOS read routines, not OS_Byte
which enable interrupts. This prevents system hanging during start-up
if keys are pressed. Fixes RP-0990 etc.
3.07 (03 Mar 92) LRust
Fixed OS_Word 11 to return palette data to r1+1, fixing RP-1429
3.07 (04 Mar 92) LRust
OS_GSInit now only resets the evaluation stack (in system workspace)
if the string contains a '<' character. This prevents contention between
high level calls to OS_GSTrans and low level use by FileSwitch while
opening message files. This fixes RP-1483
OS_SetVarValue fixed to use XOS_GSTrans (was non X form)
OS_SetVarVal now returns correct error if string is bad
3.07 (05 Mar 92) LRust
OS_Confirm now reads Yes/No characters from message file. The
pointer shape to be displayed is now read from the Wimp sprite pool,
RMA first followed by ROM, looking for 'ptr_confirm'. Fixes RP-1449
3.07 (06 Mar 92) LRust
OS_Byte 129,0,255 now returns version number &A4 (was &A3) fixing RP-1638.
3.07 (06 Mar 92) TDobson
Sprite load/merge now only checks offset to first sprite is < length of file,
fixing bug RP-0589.
3.07 (09 Mar 92) TDobson
Don't reset keyboard on OS_InstallKeyHandler if we've only just got the
keyboard ID.
3.07 (17 Mar 92) JRoach
Postpone error lookup in ChangeDynamicArea to after the
reconstruction of the RAM and System Heaps. Prevents double-mapping
of pages resulting in a dead system. G-RO-5512.
3.08 (23 Mar 92) LRust
OS_EvaluateExpression now returns R1 = 0 (no returned string) if the expression
evaulated by GSTrans overflowed the internal buffer. This ensures that *IF
reports the buffer overflow error message instead of "not a string", fixing RP-1534
3.08 (01 Apr 92) TDobson
Added code to switch into user mode and issue a dummy SWI just after Service_PostInit,
so that any pending callbacks get serviced (fixes RP-1812).
3.08 (02 Apr 92) TDobson
Added screen blanking code.
3.08 (03 Apr 92) LRust
RMTidy copies errors during die to GeneralMOSBuffer to ensure not overwritten
during re-initialisation.
3.08 (07 Apr 92) TDobson
Fixed DebugHeaps code in ExtendHeap (used to overwrite data below base of heap).
3.09 (23-Apr-92) LRust
* Fixed CTRL-Break/Reset causing CMOS corruption by doing 16 IIC
start/stop sequences after reset to allow RTC to shift out any
data requested.
* IIC start sequence extended to allow BMU to detect a start.
* IIC read/write now disable IRQs during clock and data hi times
to prevent erroneous idle sequence detection by BMU.
3.09 (24-Apr-92) TDobson
Removed range checking of buffer number in OS_Byte &15 (flush buffer).
3.10 (30-Apr-92)
Disable interrupts around IIC receive to aid BMU start/stop detection
by preventing idle periods (clock & data hi).
-- RISC OS 3.10 released to public --
3.20 (xx-Apr-93) JRoach
Added read option to OS_SetColour
3.20 (15-Apr-93) TDobson
Made OS_CRC return an error if increment is zero, rather than looping forever.
< lots of Medusa work >
3.21 (21-Jul-93) TDobson
First Medusa release
3.22 (09-Aug-93) AGlover
vdugrafg/vdugrafdec: Fix bug in putsprite|mask when LH edge obscured
vdugrafh: Fix bug in SwitchOutputToMask when calculating mask size
(18-Aug-93) TDobson
RMA, System heap, Sprite area, Font cache, RAM disc are now new-style areas.
Sprite area, Font cache, RAM disc, Free pool maximum sizes are now dynamic (ie total ram size),
and their base addresses are allocated at run-time.
Doubly-mapped areas are now supported, but known bug exists if
screen grows and needs pages in use by a doubly-mapped area.
Spec change to OS_DynamicArea (Create dynamic area): if workspace pointer passed in is -1, the
value used is the base address of the area (this is important if the base address is being
allocated by RISC OS).
(20-Aug-93) TDobson
New addition to OS_ReadDynamicArea: if r0 on entry is -1 then
information is returned on application space:
r0 = base address (&8000)
r1 = current size (excluding bottom 32K)
r2 = maximum size (excluding bottom 32K)
(23-Aug-93) AGlover
vdugrafK: Ensure new format sprites aren't screensaved with palettes
(03-Sep-93) TDobson
Areas which require particular physical pages should now work.
LateAborts assembly option added (untested).
(03-Sep-93) SCormie
Memory information SWI (OS_Memory) added (file MemInfo).
Processor vector indirection added, including SWI OS_ClaimProcessorVector (file ExtraSWIs).
-- Version 3.23 released --
(17-Sep-93) AGlover
(vdugrafdec, vdugrafj vdugrafk) Sort out screenloading of sprites with new mode format
mode words (untested at present).
(20-Sep-93) TDobson
Screen is now a new style area.
All old-style area code now removed.
Fixed bug MED-00488 (composite sync inverted).
Fixed bug MED-00583 (modes with line length > 4Kbytes didn't work).
(21-Sep-93) TDobson
Fixed bug MED-00395 (OS_Byte 70 and 71 corrupting r5).
Made kernel enable cache and write-buffer again.
(22-Sep-93) TDobson
Removed old screen modes 47-51 and put in new modes 47 (PCSoft) and 48,49 (Games).
Fixed DataControlRegister programming so that eg mode 29 works with 2M VRAM.
Late abort option enabled.
-- Version 3.24 released
(01-Oct-93) TDobson
After pre-shrink handler is called, round down shrink value returned to a page multiple.
(07-Oct-93) TDobson
Fix MED-00626: RMReInit should only write to CMOS if module was unplugged to start with
(solves FSLock problem).
(08-Oct-93) TDobson
Bottom level DPMS control put in - byte at location &147D controls DPMS state on blanking.
Modified OS_Word(&15,4) (Read unbuffered mouse position) to call PollPointer, so that if
no flyback IRQs happen (because hsyncs have been turned off), moving the mouse pointer
still unblanks the screen.
-- Version 3.25 released
(19-Oct-93) TDobson
Fix MED-00523: Remove pointer if would be completely off LHS of screen, otherwise can
upset display if it straddles hsync pulse.
Fix MED-00637: Creating dynamic area of zero maximum size now works.
Screen mode 32 changed to NColour=63 and ModeFlags=0, like all other numbered 256 colour
modes.
-- Version 3.26 released
(21-Oct-93) SCormie
*Configure MouseType should have called OS_Pointer.
(25-Oct-93) SCormie
NewReset now waits up to 1 sec for keyboard present.
(25-Oct-93) TDobson
Fix bug MED-00811 - initialise SpriteSize to zero on reset.
(25-Oct-93) JRoach
Fix bug MED-00680 - *Save syntax message not tokenised properly.
(26-Oct-93) JRoach
Fix bug MED-00570 - delete-power-on gives 1997. Problem was
delete-power-on set base to 1994 and so when the modulo of '3' came
out of the clock the kernel thought it had to be 1997.
(26-Oct-93) TDobson
Fix bug MED-00301 - mode selector block now alternates between two
overlapping ones, so that returned mode number changes each mode
change (although if someone goes eg M%=MODE:MODE 12:...:MODE M% it
will use the block specified by M%).
(28-Oct-93) AGlover : vduswis, vdudriver, vdugrafj, vdugrafk
Bugfixing session on sprites. Major points:-
Screensave works, and gives old format sprites where possible.
Screenload works, and no longer believes the mode number in the
sprite - it will always build a mode selector to suit the sprite.
EIG 0 and EIG 3 sprites supported - fixes DragASprite leaving
trails on-screen in these modes.
Mode 32 is now the monitor type 4 256 colour substitute mode.
GetSprite(User) ensures no LH wastage on new format sprites.
Screensave now copes with saving a full entry 256 colour palette.
Whenever possible GetSprite will make an old format sprite - if
you must have a new format sprite make it first with CreateSprite.
While there are four of us intermittently touching bits of the kernel
please say which files you've actually altered. Thanks. amg
(03-Nov-93) AGlover : vdugrafj
Change substitute mode numbers used for 90 x 90 dpi sprites to 25-28
instead of 18-21.
(04-Nov-93) JRoach : GetAll, Kernel
Enable IncludeTestSrc and make Reset vector for resetting work in
conjunction with the test source.
(08-Nov-93) TDobson : vdudecl, vdudriver
Complete kernel support for DPMS.
(10-Nov-93) TDobson : source.pmf.osbyte
Fix bug MED-00963: INKEY(-256) now returns &A5.
(11-Nov-93) TDobson : source.vdumodes
Fix bug MED-?????: mode 32 now same timings as modes 29-31.
(12-Nov-93) AGlover : source.vdugrafg
Fix bug MED-01112 : 32K/16M sprites not working with SpriteOp ReadPixelColour (41)
Fix bug MED-????? : Correct the routine which bounces palettes on new format sprites
-- Version 3.27 build
(18-Nov-93) AGlover : source.vdugrafh, source.vduswis, source.vdudriver, source.vdugrafj
Fix bug MED-01130 : GetMaskSpWidth was going wrong when mask exactly fitten in a word
Change handling of sprite type so that unknown types are handled as 32bpp - will make
life easier for people adding new types that the OS doesn't handle.
(23-Nov-93) AGlover : source.vdugrafg, source.vdugrafh, source.vdugrafi
Fix bug MED-01281 : return an error when I should for spriteops given new format
masks.
(24-Nov-93) AGlover: source.vdugrafg
Fix bug MED-????? : sprite name matching code was being broken by changed
lowercase macro. Code now uses uk_lowercase which retains the original
behaviour of the macro keeping the sprite stuff compatible with 3.10
(25-Nov-93) TDobson: source.vdumodes
Fix mode definition for mode 47 (PCEm mode 360 x 480) to have sync polarity 3,
so it gives correct height on VGA-only monitors.
(26-Nov-93) SCormie: Source.PMF.key, Source.PMF.osinit
Keyboard driver and key handler now trigger each other correctly during reset.
Change default serial threshold from 9 to 17.
(30-Nov-93) AGlover: source.vdu23, source.vduwrch
Fix bug MED-01141: Split CompileTextFgBg into two separate routines and only call
the one actually relevant. This prevents spurious colour changes when a text colour
set by OS_SetColour is changed using VDU 17 or VDU 23,17 (what used to happen is
that because the Fore/Back Col and Tint words didn't produce the colour in use (which
had been modified directly by OS_SetColour) it was replacing it with whatever the
ForeCol and Tint produced. Note: Doing a VDU 23,17 before the first VDU 17 will still
go wrong - but I don't think it's worth fixing.
(30-Nov-93) TDobson: source.vdumodes
Change XEigFactor for games modes 48,49 to 2 (from 1) at the request of Ran Mokady.
(01-Dec-93) TDobson: source.pmf.osword
Fix bug MED-00355: OS_Word(&0F) no longer requires a terminating
character after string (it now pushes the string on the stack and
terminates it, before calling the TerritoryManager).
(01-Dec-93) TDobson: NewReset
Fix bug MED-01513: now prints eg "RISC OS 10MB" on startup.
(02-Dec-93) TDobson: ModHand
Fix bug MED-01229: now uses 8 bytes of unplug CMOS for podules, + 1 for network card
(06-Dec-93) JRoach: NewReset
Correct mouse step default to 2 for faster mice we'll be using.
(07-Dec-93) AGlover: source.vdugrafj, source.vdugrafk
Fix bug MED-?????: make sure screensave and getsprite(user) don't permit palettes
on sprites which it can't force back to an old screen mode
(09-Dec-93) TDobson: source.vdudriver, source.vduswis
Use Roger's algorithm for default XEigFactor, YEigFactor for mode selectors.
(13-Dec-93) TDobson: GetAll
Set AddTubeBashers flag to FALSE.
(15-Dec-93) TDobson: GetAll, NewReset
Set DebugROMInit and DebugROMErrors flags to FALSE.
Fix bug MED-01774: Change default FontSize to 64K.
-- 3.28 build
(21-Dec-93) AGlover: source.vdugrafj
Change screenload so that should the mode selector it made fail, and the
sprite has a mode number, it will select that mode as a fallback. Note:
this won't work fully until OS_ScreenMode correctly returns VS for a mode
it can't do. Bug MED-01895.
(21-Dec-93) OLove: Messages
Changed 'Memory cannot be moved' error message.
-- New version 3.29 spuriously created by Owen Love 21-Dec-93
(21-Dec-93) AGlover: arthur3
Fix bug MED-01583 - *eval 9999999999999 was calling msgtrans twice to return error
(06-Jan-94) TDobson: Kernel, Source.PMF.Key, SWINaming
Added SWI OS_Reset - part of fix for MED-01397.
(10-Jan-94) BCockburn: Middle
Fixed Ethernet address generation to use the correct base
(&0000A4100000) value rather than the value &0000A4000000 as found
in the Dallas chip itself.
(10-Jan-94) TDobson: source.vdudriver, source.vduswis
Fixed bug MED-00563: invalid mode selector should return error from
mode change, not select mode 0.
If current monitor type is a file, now uses VGA substitute table for
unavailable mode numbers - eg if you select mode 16, you now get
mode 27, rather than mode 0.
(10-Jan-94) TDobson: source.vdudriver
Fixed bug MED-00483: "mode selector" not on a word boundary (eg
sprite mode word) is now not offered round to Service_ModeExtension,
so should now give error, rather than data aborts.
(12-Jan-94) JRoach: GetAll
Fixed bug MED-00585: configured language wasn't 10, and now is.
(13-Jan-94) TDobson: GetAll, ModHand
Introduced conditional flag RMTidyDoesNowt - if true (which it is on Medusa),
then RMTidy returns having done nothing. This is because it would always
fail anyway, because FSLock always refuses to die. Fixes MED-02125.
(14-Jan-94) SCormie: source.PMF.osinit
Changed combo chip configure sequence so that 710 configuration doesn't put
665 into a strange state if receiving at the same time (caused chip to generate
an interrupt which could not be cleared.
(14-Jan-94) JRoach: Arthur2
Changed GSInit/GSRead to use its stack memory as a wrapping buffer.
This means GSInit doesn't need to flatten it before starting which
means recursive calls the GSTrans work.
(17-Jan-94) TDobson: ARM600, ChangeDyn
Put in semaphore, so that OS_ChangeDynamicArea will fail if it is already threaded.
(Data abort handler clears it, in case area handler goes bang!)
(17-Jan-94) TDobson, AGlover: source.vdugrafj
Fixed the 21-Dec-93 fix so it assembles and hopefully works!
(18-Jan-94) TDobson: ARM600, Kernel, SWINaming
Added soft copy for MMU control register, and SWI OS_MMUControl to update it.
(19-Jan-94) AGlover: source.vdugrafg
Fix bug MED-02210 - plot mask for 1bpp masks was going wrong when plotting clipped.
(19-Jan-94) JRoach: NewReset
Correct CMOS default for textured window background to match the CMOS spec.
(The spec says set bit 7 of &8c to 0 to turn on textured window backgrounds).
(19-Jan-94) JRoach: NewReset
Correct CMOS default for desktop font to '8' which is still Homerton.Medium.
Changed needed as Darwin has been removed and so the numbers change.
(19-Jan-94) TDobson: ARM600
Fixed bug MED-02452: make BangCamUpdate check if oldaddr=newaddr,
and don't remove page from old address if so.
(19-Jan-94) TDobson: source.vdudriver
Changed notional operational range for VCO to 55-110MHz (from 40-80MHz).
(21-Jan-94) TDobson: ARM600
Changed ROM access speed to 156.25ns (from 187.5ns)
(21-Jan-94) TDobson: source.vdudriver
Changed ComputeModuli to only use R-values up to 16 (not 64), to
improve minimum comparison frequency.
Change FIFO load position algorithm to use table produced by Peter
Watkinson.
(24-Jan-94) TDobson: GetAll, source.vdudriver, source.vduswis
Conditionally reversed change to XEig/YEig algorithm back to what it was
in 3.27.
(25-Jan-94) TDobson: source.vdudriver
Fixed FIFO load position table to use correct units.
-- New version 3.30 created by JRoach
(28-Jan-94) AGlover: syscomms, source.vdugrafj
Fix bug MED-01570 (syscomms), and various bugs reports involving
1bpp 2 x 2 eig modes (vdugrafj: sanitizesgetmode was mishandling
double pixel modes)
(28-Jan-94) TDobson: source.vdumodes
Update kernel's hard-wired mode tables to use new VCO range.
(28-Jan-94) TDobson: TickEvents
Fixed bug MED-02498: OS_CallAfter/Every and OS_RemoveTickerEvent problems.
(31-Jan-94) TDobson: TickEvents
Fixed register corruption in above fix.
(01-Feb-94) AGlover: hdr:sprite, vdugrafdec, vdugrafj, vdugrafk, vdugrafl
Fix bug MED-02160. Make switching output to, and screenloading of, a
256 colour 8bpp sprite work. The hdr change is because the value of
MaxSpritePaletteSize has been updated.
(03-Feb-94) TDobson: ARM600, ChangeDyn, GetAll
Fix bugs MED-00793, MED-01846. Dynamic areas which may require
specific physical pages must now have a new bit set in the dynamic
area flags. As a result, other areas can perform large grows in one
chunk, rather than being split up, because it is not necessary to
set up the page blocks etc. Therefore a) dragging RAMFS bar is much
faster and b) there's no chance that intermediate reinits of RAMFS
can steal pages that were to be used for subsequent chunks.
-- New version 3.31 built by TMD
(08-Feb-94) AGlover: source.vdugrafh
Fix bug MED-01885. WritePixelColour wasn't working correctly for
8bpp full palette sprites.
(09-Feb-94) TDobson: Messages
Fix part of bug MED-02389 by changing system heap full message.
(10-Feb-94) AGlover: source.vdugrafh
More on MED-01885. AddTintToColour decides what to do by NColour, rather
that SprRdNColour which is correct for Write/ReadPixel in sprite.
Set NColour to SprRdNColour for the call and then restore it afterwards.
The scope of the bug was more than first thought - it affected writing to
any 8bpp sprite in anything other than an 8bpp screen mode.
(11-Feb-94) TDobson: NewReset
Limit maximum size of RAM disc to 16MB, because FileCore can't cope
with some larger sizes.
-- New version 3.32 built by TMD
(14-Feb-94) TDobson: NewIRQs
Fix bug MED-02859 - Unknown IRQ code now copes with DMA IRQs.
(17-Feb-94) AGlover: source.vdugrafk
Fix bug MED-02895 - *screenload was discarding the error pointer
on an error return from WritePaletteFromSprite
(18-Feb-94) AGlover: source.vdugrafj
Secondary fix for MED-02895. WritePaletteFromSprite was actually
destroying the error pointer. Remove the change to vdugrafk.
====> Medusa OS build <==========================================================
(28-Apr-94) AGlover: source.vdugrafj
Fix screenloading of 8bpp non-full palette sprites (deferred fix from Medusa
freeze). MED-03186
(28-Apr-94) AGlover: source.vdugrafh
Fix spriteop readpixel for 256 colour full palette modes (deferred fix from
Medusa freeze). MED-03090
(28-Apr-94) AGlover: source.vduswis
Fix readmodevariable returning 63 instead of 255 for a sprite mode word.
MED-03265
(25-May-94) AGlover: source.vdugrafg,j,k
Changes to allow palettes on new format sprites of 8bpp and below. Also
William Turner's vdugrafh,i.
**** this has been superceded by the +log file - no further entries here.
(amg: 21st September 1994)