-
Notifications
You must be signed in to change notification settings - Fork 117
/
CHANGES.TXT
954 lines (551 loc) · 29.2 KB
/
CHANGES.TXT
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
==================================================================
MikeOS -- Open source 16-bit operating system for x86 PCs
Copyright (C) 2006 - 2014 MikeOS Developers -- see doc/LICENSE.TXT
==================================================================
4.5 (21 December 2014)
----------------------
# New program: Forth interpreter (FORTH.BIN) from Walt Nagel;
source code is programs/forth.asm
# New program: Mega Archiver (ARCHIVE.BAS) from Joshua Beck
# New game: FISHER.BIN from Jasper Ziller
# Updated MikeBASIC Plus Plus (MBPP.BAS) to version 3.2.3
# Updated Memory Manipulator (MEMEDIT.BAS) to 3.1.1
# Updated Calculator (CALC.BAS) to version 2.0.1
# Updated Cosmic Flight (CF.BAS) to 2.0.2
# Updated ASCII Artist (DRAW.BAS) to 3.0.1
# Updated KEYBOARD.BIN with accidentals (from Robert Looney)
# Updated build-openbsd.sh (from Takayoshi Sasano)
# Updated build-osx.sh (from Caleb Xu)
# Fix: always show cursor when returning from BASIC in EDIT.BIN
# source/features/basic.asm: do_cls: change "int 10" to "int 10h"
# Changed "kigalo" to "kigali" in HANGMAN.BAS
# Changed "bueno saires" to "buenos aires" in HANGMAN.BAS
# Changed "qemu" to "qemu-system-i386" in test-linux.sh
# Updated URL for Windows QEMU in doc/handbook-sysdev.html
# Handbook fixes
4.4 (23 March 2013)
-------------------
# New game: MikeOS Sudoku (SUDOKU.BAS), a puzzle game
# New game: Cosmic Flight (CF.BAS) from Joshua
# BASIC: string additions now possible with literal strings, other string
variables, or numeric variables, eg: $1 = $2 + "foo" + x + "bar"
# BASIC: Use "x = VARIABLES" to determine where BASIC stores its numeric
variables
# BASIC: New BREAK command to halt execution and show line number
# BASIC: Now displays line numbers with error messages
# BASIC: New CASE command from Joshua (changes case of a string)
# BASIC: New ELSE keyword from Joshua (used with IF)
# BASIC: New FILES command from Joshua (shows file listing from disk)
# Updated MikeBASIC Plus Plus (MBPP.BAS) to version 3.2.1
# Updated Calculator (CALC.BAS) to 2.0.0
# Bump API to version 16
# Handbook fixes
4.3.1 (28 April 2012)
---------------------
# Updated to latest version of ASCII Artist (draw.bas)
# Updated to latest version of MikeBASIC++ (mbpp.bas)
# source/features/basic.asm fixes from Joshua Beck
4.3 (24 February 2012)
----------------------
# New game: MUNCHER.BAS, an apple-eating action game
# New game: ADVNTURE.BAS, a text adventure
# Updated to latest versions of MEMEDIT, CALC and DRAW
# MikeBASIC++ (MBPP.BAS) library included on the disk
# BASIC: DO + LOOP UNTIL/WHILE/ENDLESS loops implemented
# BASIC: New STRING command to get or set bytes at locations in a string
# BASIC: New PEEKINT and POKEINT commands
# BASIC: INK keyword added to get current colour
# BASIC: FOR/NEXT loops now accept variables (eg "FOR X = Y TO Z")
# BASIC: PRINT no longer scrolls if followed by semi colon on last line
(with the exception of HEX)
# BASIC: NUMBER added, to convert between strings and integers
# BASIC: RENAME and SIZE commands added
# BASIC: ASKFILE command, which shows the file selector
# BASIC: Sums now check for division by zero and break with an error
# BASIC: ALERT command can now take a string variable
# BASIC: LISTBOX added -- shows list dialog box where first string
is "Foo,Bar,Baz" and second and third are help
# BASIC: INCLUDE added, to append another BAS file onto the end of the
current one and call routines in it
# BASIC: CURSPOS added, to get cursor position
# BASIC: CURSCOL added, to get colour of character under the cursor
# BASIC: Can use var = TIMER to get lower word value of system clock
# BASIC: PAGE added to switch between working and active (display) pages
# BASIC: LEN added to get length of string
# BASIC: DELETE added to delete files
# BASIC: READ added to read data from label
# BASIC: INK command added for printing strings
# BASIC: AND added to IF
# BASIC: ALERT, ASKFILE and LISTBOX preserve cursor location
# BASIC: Added VERSION keyword to get the API version
# BASIC: SAVE returns 2 in R variable if file exists
# USB drive floppy disk emulation updates from Mike Gonta
# VIEWER can now read BAS files
# SERIAL now clears screen after initial dialog box
# HANGMAN now limits input to "a" to "z" keys (and Esc)
# Fix CLI bug (eg running COPY internal command even if user had intended
to run a program called COPYMEGA.BIN)
# MIKETRON.BAS removed (code included in EXAMPLE.BAS)
# Bump API to version 15
4.2 (30 September 2011)
-----------------------
# New program: Memory Manipulator (MEMEDIT.BAS) from Joshua Beck: a
colourful program for editing bytes in memory, written in BASIC
# New program: ASCII Artist (DRAW.BAS) from Joshua Beck: lets you draw,
load and save images created with ASCII characters
# New program: MikeTron Reloaded (MIKETRON.BAS) from Joshua Beck: new
features, bonuses and explosion effects
# New program: Calculator (CALC.BAS) from Joshua Beck
# CLI has new file management operations to complement FILEMAN program:
COPY, REN, DEL and SIZE
# EDIT now supports the facility to make a new file with the F3 key
# EDIT can take an existing file as a parameter at the command line:
eg "edit myfile.txt"
# EDIT will no longer let you run BASIC on an empty file
# CLI supports argument passing: program receives the string of parameters
in SI, or SI = 0 if no parameters are specified
# os_run_basic now takes a parameter string in SI and copies it into the
first BASIC string ($1), unless SI = 0
# New system call: os_string_tokenize from Matej Horvat -- reads tokens
separated by a specified character from a string
# os_file_remove now restores all registers to previous state after use
# SERIAL program offers to quit out before activating serial ports
# TEST.PCX updated and renamed to SAMPLE.PCX
# Bugfix: os_get_time_string vector is 0054h, not 0055h
# Reordered code inclusion: source/features/basic.asm is now last in kernel
# Bump API to version 14
4.1.2 (18 July 2011)
--------------------
# Added "-O0" (no-optimisation) option to all NASM calls in the build
scripts; newer versions of NASM use optimisation by default, which
we don't want
4.1.1 (20 January 2011)
-----------------------
# source/features/screen.asm: os_list_dialog now scrollable for more
entries than can fit into the dialog box
# source/features/cli.asm: dirlist expanded from 255 to 1024 bytes
# source/features/screen.asm: os_file_selector: buffer expanded to
1024 bytes
# Build scripts now copy all .bas files in programs/ to the floppy
disk image (and not just example.bas)
# source/features/misc.asm: os_pause rewritten by Paulo Valongo to work
with more BIOSes; now takes 110ms chunks in AX
# source/features/disk.asm fixes from Mike Gonta: os_get_file_list now
checks for directory entries AND volume label; os_write_file routine
now properly zeroes out the .free_clusters list
# source/features/keyboard.asm: os_check_for_key now returns 0 in AX
(and not just AL) when there's no key, as per the API docs
# Documentation and comment fixes
4.1 (17 January 2010)
---------------------
# BASIC variable assignment enhanced: can now take multiple values
and variables, eg "x = a + 2 * b + 3" (thanks Steve)
# Two new system calls: os_port_byte_out and os_port_byte_in --
send/receive bytes from ports (thanks Paulo)
# os_serial_port_enable system call: now takes 0 in AX for normal
mode (9600 baud as before), or 1 for a new slow mode (1200 baud)
# New SERIAL command in BASIC: "SERIAL ON 1200" or "SERIAL ON 9600"
to enable, "SERIAL SEND X" or "SERIAL SEND 50" to send a byte,
and "SERIAL REC X" to receive a byte into a variable
# New PORT command in BASIC: "PORT OUT 1234 X" or "PORT OUT 1234 20"
to send byte to a port, and "PORT IN 1234 X" to receive a byte
# source/features/serial.asm renamed to source/features/ports.asm
as it now contains new non-serial routines
# os_get_random rewritten: now takes low and high values in AX and
BX, and returns random int between them (inclusive) in CX; also
has new os_seed_random routine used by the kernel (thanks Ian)
# New RAND command in BASIC: generates a random number between two
values and stores the result in a variable
# CLI command checking code simplified -- no need to point SI to
the input string each time (thanks Ian)
# BASIC CURSORCHAR command is now CURSCHAR, so that it doesn't
look like a superset of the CURSOR command
# API version bumped to 13
# Handbook updates and fixes
4.0 (20 November 2009)
----------------------
# MikeOS BASIC included in the kernel; run EXAMPLE.BAS to try
it out, and see doc/handbook-appdev-basic.html for a guide
# os_run_basic call accessible to use programs: takes AX as start
of code location, and BX as size of the code (in bytes)
# App menu and CLI can now run .BAS programs as well as .BIN
# EDIT.BIN can edit .BAS files; press F8 to run the
currently-being-edited code in the BASIC intepreter
# EDIT.BIN: F5 deletes whole lines; Backspace key now functions,
although newlines still need to be removed with Delete; Esc
quits without saving -- press F2 to save (as per bottom bar)
# If AUTORUN.BIN or AUTORUN.BAS exists on the disk, it will be
executed immediately after the kernel has loaded, before showing
the normal program launcher menu
# EDIT.BIN now pops up an error dialog if it can't save a file
# source/features/string.asm: os_string_strip rewritten -- shorter
and saves 256 bytes (thanks to Ian Seyler)
# source/features/misc.asm: rewrote os_pause routine -- it now takes
AX = tenths of a second to wait (so eg AX = 30 = 3 seconds)
# programs/hello.asm and programs/gfxdemo.asm removed (and their binaries
on the floppy) -- old and not useful now
# os_dialog_box no longer raises a fatal error if strings are too long to
fit in the box
# source/features/disk.asm: os_write_file no longer overwrites a file
if it already exists; instead it bails out (carry flag set)
# API version bumped to 12
# source/features/disk.asm: filename checking and file writing bugfixes
# doc/handbook-appdev.html renamed doc/handbook-appdev-asm.html
3.3 (20 February 2009)
----------------------
# New program: EDIT.BIN -- a full-screen text editor (for Unix-formatted
text files)
# README.TXT is no longer copied to the disk images; instead,
programs/sample.txt is added for use in EDIT.BIN
# CLI now includes CAT command to display a file: 'CAT FOO.TXT'
# Music keyboard (KEYBOARD.BIN) given new interface to show a
visual representation of a music keyboard
# os_write_file now removes an older version of the specified file,
if it exists, before performing the write operation
# CLI code (source/features/cli.asm) cleaned up -- split into sections
with fewer local labels
# os_string_parse call is now accessible to external programs
# Disk calls now convert a filename to uppercase automatically, so
there's no need for the calling code to do it
# API version bumped to 11
3.2 (25 January 2009)
---------------------
# New system call: os_sint_to_string from Tslil -- converts a
signed integer to a string
# os_int_to_string rewritten by Tslil; cleaner code, and no longer
needs to be passed BX for a string location (it returns a pointer
to an internal string via AX)
# New system call: os_serial_port_enable -- initialises the port
# Serial port is no longer initialised by the kernel, but by any
external programs that need it (eg in programs/serial.asm)
# New system call: os_string_reverse (source/features/string.asm)
# os_filename_convert removed; source/features/disk.asm now does
the conversion internally
# API version bumped to 10
# Handbooks updated with API changes
# build-openbsd.sh updated by Takayoshi
3.1 (4 January 2009)
--------------------
# HANGMAN game added, in which the player works out names of cities
# PCXVIEW program renamed to VIEWER, and can display text files
as well as images
# FILEMAN program now has an option to show a file's size
# New system call: os_string_charchange (source/features/string.asm),
switches all instances of a specified char to a different one
# New system call: os_get_random (source/features/math.asm), generates
integer between 0 and 255 using the BIOS clock
# API bumped to version 9
# os_draw_block routine (source/features/screen.asm) now available
to user programs
# When a program is called from the app selector, there's no longer a
key press prompt after the program has finished
# os_dialog_box uses coloured blocks to denote highlighted button instead
of '[=' characters
# os_string_strip now uses its own buffer (not the OS disk buffer)
# Keyboard codes (eg KEY_ESC) and more colours added to programs/mikedev.inc
# os_get_file_size system call fixed
# Registers AX, BX, CX, DX, SI, DI cleared to zero before program execution
to ease debugging
# MONITOR program has better help text at the start
# build-win.bat renamed buildwin.bat (more suitable in DOS)
# Build scripts copy README.TXT to the floppy image, for reading
in the new VIEWER program
3.0 (21 December 2008)
----------------------
# Memory map shuffled: first 24K is kernel code space; then 8K buffer for
kernel disk operations; then 32K for external programs
# Major code simplification and cleanup: removed mouse support,
DOS support, STAKAN.BIN, testzone, CLI PROMPT command; many of these
features will continue to be developed in the TomOS project
# Source code restructured: bootloader moved to source/bootload;
system calls now separated into multiple files in source/features/;
os_main.asm renamed kernel.asm; kernel file is now KERNEL.BIN
# More code cleanup work: use 'mov ax, 0' instead of 'xor ax, ax' and
'mov si, foo' instead of 'lea si, [foo]'; more comments; instances of
8 spaces changed to tabs; hex notation now always uses 'h' suffix
(eg always '10h' and never '0x10') for consistency
# Certain disk routines for manipulating the FAT and root directory have
been made internal to source/features/disk.asm, and not accessible to
user programs, to simplify the disk API
# New system call: os_string_parse takes a string pointer in SI and
breaks it into zero-terminated smaller string pieces based on spaces;
eg SI = 'Foo bar baz stuff' returns AX = 'Foo', BX = 'bar',
CX = 'baz', DX = 'stuff'
# New system call: os_string_to_int takes a decimal string (max '65535')
in SI and returns the numerical value in AX
# File manager (FILEMAN.BIN) can now copy files (up to 28K in size), using
external program RAM -- first 4K is reserved for the file manager itself
# os_get_file_list now returns sanitised comma-separated list of files
(eg "FOO.BIN,HELLO.TXT" instead of "FOO BIN,HELLO TXT" etc.)
# dosbuild.bat renamed build-win.bat -- it now adds boot block and programs
to mikeos.flp using third-party tools
# os_list_dialog rewritten: now shows selected option as a black bar,
rather than with ">>>>>" indicator
# MONITOR.BIN updated for new memory map; now runs code ORGed at 36864
# When exiting a program that was launched from the menu-driven app selector,
the "Program finished" message now appears in a red bar at the bottom
# Text with bright attributes should no longer blink on the screen
# FILEMAN.BIN now refuses to rename a file to an existing filename
# build-linux.sh script now creates disk_images/mikeos.flp if that
file cannot be found
# Added README.TXT to disk/images directory; explains the purpose of each
file and how to recreate the floppy disk image
# Removed os_get_int_handler and os_modify_int_handler system calls
# Removed os_execute_program syscall; no longer needed
2.0.0 (17 October 2008)
-----------------------
# FAT12 write support implemented (limited to 64K files); includes system
calls to create an empty file, save data from RAM to a file, remove a
file, rename a file and more -- see source/fat12_write.asm
# New file manager: programs/fileman.asm -- lets you delete and rename
files, and get information on the floppy fisk
# Mouse driver from Tomasz Gorol, with system calls in
source/os_mouse_syscalls.asm and documentation in the doc/ directory;
also MOUSETST.BIN program to demonstrate it
# New system call: os_filename_convert -- takes a normal filename such
as 'FOO.BIN' and converts it into the FAT12 equivalent of 'FOO BIN'
(first part padded out with spaces to 8 chars, no full-stop separator)
# New system call: os_list_dialog -- takes a comma-separated and
zero-terminated string, and shows options in a list box
# New system call: os_input_dialog -- pops up a small box with
a message, and prompts user to enter a string
# New system call: os_string_strincmp, like os_string_compare but
limited to the number of characters passed in CL
# os_input_string improved: can now enter and backspace through
strings spanning multiple lines
# os_load_file now returns byte count in BX rather than sectors
# Cursor is always restored when leaving os_file_selector
# os_dump_registers now shows SI and DI along with AX, BX, CX, DX
# os_int_to_string fixed -- previously it wouldn't return anything
if AX = 0; now it sets string as '0'
# PCXVIEW.BIN refuses to display files without a .PCX extension
# TEST.PCX is now in programs/ and copied to floppy disk when
build-linux.sh, build-openbsd.sh or build-osx.sh is run
# os_draw_background doesn't clear screen at start, to cut down on flicker
# At kernel start, don't try to set up a block cursor (it's not useful)
# build-linux.sh now includes a method for blanking FAT12 floppies at the
top of the code, in the comments
# In programs/mikedev.inc, os_string_uppercase and os_string_lowercase
were marked incorrectly as using SI rather than AX -- fixed
# Added -w+orphan-labels to NASM calls in build-linux.sh, and fixed labels
without colons throughout OS and programs
# Un-needed commented-out lines removed from programs/keyboard.asm
# In source/bootload.asm, comments referred to first two bytes of FAT;
really means first two clusters -- now fixed
1.4.2 (20 August 2008)
----------------------
# Users can now exit the minicom serial terminal program
(SERIAL.ASM) by pressing the F8 key
# VOL command added to the CLI: displays volume label and
filesystem information for the current floppy disk
# os_check_for_key now returns complete scancode in AX,
rather than just the key in AL
# Various small documentation updates
1.4.1 (20 July 2008)
--------------------
# New system call: os_dump_registers (displays the contents of
AX, BX, CX and DX in hexadecimal format)
# System call vectors added for os_show_cursor and os_hide_cursor,
so that they're accessible to user programs
# os_modify_int_handler now clears the interrupt flag on entry,
and sets it on exit
# Some labels didn't have colons, triggering warnings with some
versions of NASM -- fixed
1.4.0 (15 July 2008)
--------------------
# System call for debugging: os_dump_string, shows ASCII text and
hexadecimal dump
# New system calls for converting numbers to text: os_print_digit,
os_print_1hex, os_print_2hex, os_print_4hex, os_long_int_to_string
# New system calls: os_set_time_fmt and os_set_date_fmt to determine
output of os_get_time_string and os_get_date_string respectively
# More system calls: os_get_int_handler, os_print_space, os_long_int_negate
# Bootloader: Buffer now 8K from end of loader, removed unnecessary disk
reset calls, simplify FAT cluster calculation, FAT fixes
# File selector now exits on Esc keypress (PCXVIEW.BIN updated accordingly)
# New DOS function, 35h -- get interrupt vector
# Updated FAT code in syscalls.asm as per bootloader fixes
# Minor changes and comments to string functions
# File selector limited to 14 names to avoid overflow down the screen
# os_get_file_list should better handle floppies made on Windows
# os_program_load will fail if program is too large
# os_file_selector now shows cursor when finished
# mikedev.inc's system call list now categorised
# New system variables section in os_main.asm, currently holding
settings for time and date formatting
# testzone.asm added in source directory -- a place for trying out quick
code snippets, accessible via 'TEST' in the CLI
# LICENSE.TXT moved to doc/ directory
# Lots of small tweaks, comment updates and cosmetic fixes
1.3.1 (14 May 2008)
-------------------
# OpenBSD build script added (build-openbsd.sh)
# Simple PSP block moved from start of kernel to
os_execute_program routine
# Handbook updates (links to OSes based on MikeOS, code samples
updated, Q for Mac OS X link fixed)
# Various cosmetic code and comment cleanups
1.3.0 (8 April 2008)
---------------------
# New 'minicom'-like serial terminal program, serial.asm in the
programs/ directory (replaces old serial.asm)
# New pcxview.asm program to display 8-bit 320x200 PCX images, plus
test.pcx on disk images as a demo
# os_program_load removed: new routine to load file is os_load_file,
where AX = filename and CX = location in RAM to load file; returns
BX = size of file loaded
# New system call: os_execute_program: runs code located at 100h
# New system call: os_get_cursor_pos -- returns DH = row of cursor
and DL = column
# System call vectors at the start of os_main.asm cleaned up: now
they are simple jmp instructions rather than call/ret sequences
# The CLI and program selector now refuse to execute MIKEKERN.BIN
# os_file_selector now shows the cursor after a file is chosen
# gfxdemo.asm now displays quit message in top-left corner
# hardlist.asm removed from programs/ directory (and HARDLIST.BIN
removed from disk images) -- no real purpose for it
# VLAK.BIN removed from disk image (didn't quit correctly); replaced
by STAKAN.BIN Tetris-like game
1.2.0 (20 January 2008)
-----------------------
# New monitor.asm program by Yutaka Saiko: enter machine code
instructions in hex format, followed by '$'
# Information for new monitor.asm program added to Handbook
# New system call: os_find_char_in_string -- locates and returns
the position of a character in a string
# CLI now accepts complete executable names (eg 'hello.bin')
and not only short names ('hello')
# doserror.asm removed from the programs/ directory
# Handbook fixes
1.1.1 (12 December 2007)
------------------------
# Mac OS X build script fixed
# Project now hosted on BerliOS at http://mikeos.berlios.de
# Handbook fixes
1.1.0 (8 December 2007)
-----------------------
# MikeOS API version incremented to 2
# New serial port support for native MikeOS programs (Ian Seyler);
os_send_via_serial and os_get_via_serial system calls, plus a
demo program (serial.asm)
# New system call: os_get_date_string (Ian Seyler): returns
a string like '12/31/2007'
# CLI updated with new 'TIME' and 'DATE' commands (Ian Seyler)
# dosbuild.bat updated (Ian Seyler)
# build-osx.sh script for OS X users added (Michael van Tellingen)
# New Handbook information on building on Windows and Mac OS X
# New Handbook section on the serial port
# Handbook tweaks: mini TOC in 'Making an OS' section; new
'Go further' links section; close <li> tags; 'Using MikeOS'
section now linked in left-hand bar; FAQ on 16-bit/asm
1.0.0 (16 September 2007)
-------------------------
# Restructured directory layout: bootloader (renamed bootload.asm)
and kernel now both in 'source' directory; new 'doc' directory
# 'build' and 'make_disks' scripts merged into a single script
called 'build-linux.sh'; BUILD.BAT renamed DOSBUILD.BAT
# New os_file_selector: pops up a dialog box for selecting a file;
result is a zero-terminated 11-char string pointed to by AX
# New system call: os_string_truncate -- cuts string down to specified
number of characters from start
# New system call: os_bcd_to_int -- converts binary coded decimal
numbers into integers
# New system call: os_get_time_string -- generates a string with
the current time (eg '20:41')
# os_string_chomp now strips leading spaces as well as trailing
# os_print_blank_line renamed to os_print_newline
# os_int_to_string updated -- now based on a public domain routine
that handles full 16-bit registers
# CLI now strips spaces with os_string_chomp before checking for blank
lines -- stops it complaining that ' ' (space) is not a valid program
# os_string_strip and show_files now use os_buffer as a temporary store,
rather than their own strings (reduces kernel size by 512 bytes)
# os_input_string fixed so that backspaced chars are zeroed-out
# os_int_reboot internal call added, which reboots the machine
via the keyboard controller
# Removed 'API version' from start of os_main.asm; kernel code now
starts at 8000h (bootloader updated accordingly)
# Added os_get_api_version which returns the current API version,
as defined at the top of os_main.asm, in AL
# Removed CLI_VER from os_cli.asm -- it's not going to be updated
outside of MikeOS so a single global version number is simpler
# Changed 'REBOOT' to 'EXIT' in os_cli.asm -- now it doesn't
reboot but exits cleanly with a 'ret'
# CREDITS.TXT added to list people involved in the project
0.40 (16th January 2007)
------------------------
CHANGES BY PETER NEMETH:
# os_syscalls.asm renamed to syscalls.asm, to support the DOS 8.3
filename character format (NASM could not find certain files)
# BUILD.BAT added for DOS users
# Divide by zero handling (int 0h) added
# Drive descriptor fixed in bootsector and some features added;
now it will not hang the system if there is a boot failure
# Before loading a DOS program, save and clean up registers
# DOS exit call fixed: does not restart the OS, and programs
can exit with error codes
# DOS 'get date' interrupt added; now returns the current date
# Some rets replaced with irets
# DOS Ctrl+Break handler added; not yet working (IRQ 9 doesn't
call int 1Bh)
# DOS print character via printer added
# Some helper routines added for DOS
# DOS CP/M compatible routines added
# DOS reset disk added
# DOS set/get current drive added
# DOS set date function added
# DOS set/get time function added
# DOS functions sorted by function number
# DOS unimplemented interrupt call fixed; now only exits from
program and display message, not restart OS
# DOS serial port and modem support interrupt added;
read and write from STDAUX (COM1)
# DOS interrupt flush buffer and read fixed; now really flush the
buffer before read
CHANGES BY MIKE SAUNDERS:
# gfxdemo.asm fixed to quit properly
# DOS set vector routine added
# Added mini Program Segment Prefix block to os_app_data in
os_main.asm -- needs to be done properly, but VisiCalc
now starts up
0.30 (12th November 2006)
-------------------------
# New command line interface mode, currently featuring DIR, HELP,
CLS, PROMPT, VER and EXIT inbuilt commands
# os_alert_dialog renamed os_dialog_box due to new feature: multiple
button support. If DX = 1 when called, it presents two buttons
(OK and Cancel) with the selection returned in AX
# New system call: os_string_compare -- takes two strings and sets
the carry flag if they're the same
# New system call: os_string_chomp -- removes trailing spaces
at the end of a string
# New system call: os_string_strip -- removes character specified
in AX from the string in SI
# Kernel source split into multiple files for easier editing, based
around os_main.asm which includes the rest. These kernel files
are now in kernel/, with the bootloader in bootloader/
# os_program_load now sets carry flag if program not found, instead
of bailing out to os_fatal_error, and also returns from a call
# os_program_load can clear the screen before loading a program if
BX = 1. Useful for the file selector dialog
# Changed os_pause to use BIOS call
# Fixed zero-termination bug in os_string_copy
# MikeOS programs that include mikedev.inc can now access the
8K scratchpad buffer via os_buffer
# Moved DOSTEST.ASM, for testing DOS compatibility, into the
programs/ directory (so that it's automatically built)
# Bootloader now has error messages, rather than just freezing
# Split up the assemble and disk-image scripts to avoid loopback
mounting errors, and simplify editing
# Various small cleanups and fixes
0.25 (27th October 2006)
------------------------
# New system call: os_modify_int_handler
# Removed DOS compatibility interrupt handlers from bootloader,
replaced with code in kernel using os_modify_int_handler
# System call for os_get_file_list routine added
# Music keyboard demo app no longer uses 100% CPU
0.24 (25th October 2006)
------------------------
# Released on SourceForge
==================================================================