-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathChangeLog.vx68k
5052 lines (3539 loc) · 159 KB
/
ChangeLog.vx68k
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
2000-12-23 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* include/vm68k/memory.h (class memory_map): Add throw specs to
methods: get_8, get_16, get_16_unchecked, get_32, put_8, put_16,
put_16_unchecked, and put_32.
* libvx68k/machine.cc (boot): Use memory_exception instead of
special_exception.
* libvx68k/doscontext.cc (start): Likewise.
* bin/main.cc (run_boot): Likewise.
* include/vm68k/processor.h: Add include of <vm68k/except.h>.
* include/vm68k/except.h (struct special_exception): Removed.
(struct bus_error_exception): Moved to memory.h.
(struct address_error_exception): Likewise.
* include/vm68k/memory.h (struct memory_exception): New class.
(struct bus_error_exception): Moved from except.h. Change the
base class to memory_exception.
(struct address_error_exception): Likewise.
* libvm68k/Makefile.am (libvm68k_la_SOURCES): Remove
defaultmem.cc.
* libvm68k/defaultmem.cc: Removed.
* libvm68k/memory_map.cc (class default_memory): New class.
* include/vm68k/memory.h: Modify comments.
(class default_memory): Removed.
* libvm68k/execunit.cc: Remove includes of <vm68k/addressiong.h>
and <vm68k/conditional.h>.
* include/vm68k/Makefile.am (vm68kinclude_HEADERS): Replace
condition.h with conditional.h.
* include/vm68k/conditional.h: Renamed from condition.h. Also
change all users. Modify comments.
(namespace conditional): Renamed from condition. Also change all
users.
* libvm68k/Makefile.am (libvm68k_la_SOURCES): Replace statusreg.cc
with condition_code.cc.
* libvm68k/condition_code.cc: Renamed from statusreg.cc.
* libvm68k/Makefile.am (noinst_HEADERS): Replace inst.h with
instr.h.
* libvm68k/instr.h: Renamed from inst.h. Also change all users.
* include/vm68k/processor.h: Renamed from cpu.h. Also change all
users.
2000-12-22 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* libvm68k/memory_map.cc: Move null_memory.
(get_16, get_32, put_16, put_32): Modify test for an address
error.
(get_32, put_32): Modify the alignment test.
(get_32): Return in one place.
* libvm68k/memory.cc (get_32): Rewrite using an intermediate
variable.
* Makefile.am (SUBDIRS): Replace libvx68kgtk with vx68kui.
* bin/Makefile.am (vx68k_LDADD): Likewise.
* configure.in (AC_OUTPUT): Likewise.
* vx68kui: Renamed from libvx68kgtk.
* bin/Makefile.am (vx68k_LDADD): Replace libvx68kgtk.a with
libvx68kui_gtk.a.
* libvx68kgtk/Makefile.am (noinst_LIBRARIES): Rename libvx68kgtk.a
to libvx68kui_gtk.a.
(libvx68kui_gtk_a_SOURCES): Renamed.
* libvm68k/Makefile.am (libvm68k_la_SOURCES): Replace addrspace.cc
with memory_map.cc.
(libvm68k_la_LDFLAGS): Modified.
* libvm68k/memory_map.cc: Renamed from addrspace.cc.
* libvm68k/inst0.cc [0] (cmpib, cmpiw, cmpil, eoriw, orib, oriw,
oril): Removed.
* libvm68k/inst11.cc [0] (cmpb, cmpw, cmpl, cmpaw, cmpal, eorb_r,
eorw_r, eorl_r): Removed.
* libvm68k/inst14.cc [0] (asrl_r, lslw_r, lsll_r, lslb_i, lslw_i,
lsll_i, lsrw_r, lsrl_r, lsrb_i, lsrw_i, lsrl_i, rolb_r, rolw_i,
roll_i, roxrw_i, roxrl_i): Removed.
* libvm68k/inst4.cc [0] (extw, extl, negb, negw, negl): Removed.
* libvm68k/inst5.cc [0] (dbf): Removed.
* libvm68k/inst8.cc [0] (orb, orw, orl): Removed.
* libvm68k/inst9.cc [0] (subb, subw, subl): Removed.
* libvm68k/Makefile.am (INCLUDES): Remove
-DVM68K_ENABLE_DEPRECATED.
* include/vm68k/cpu.h [VM68K_ENABLE_DEPRECATED] (extsb, extsw,
extsl): Removed.
* libvm68k/defaultmem.cc (get_8, get_16, put_8, put_16): Remove
address masking.
(get_16, put_16): Add assertion checking.
* libvx68k/mainmem.cc (get_16, get_8, get_32, put_16, put_8,
put_32): Remove address masking. Add assertion checks.
* libvm68k/memory.cc (get_32, put_32): Add assertion check.
* include/vm68k/memory.h (class memory): Move the function_code
argument to the end. Also change all users and derived classes.
2000-12-17 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* libvm68k/inst14.cc (m68k_roxl_i): New function.
(install_instructions_14): Use the new handler.
* Version 1.1.4.
* configure.in: Set VERSION to 1.1.4.
* TODO: Updated.
* NEWS: New version.
2000-12-16 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* libvx68k/systemrom.cc (initialize_iocs_calls): Add new argument
data. Pass data to set_iocs_call.
(system_rom): Add the second argument.
2000-12-15 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* libvm68k/inst4.cc (m68k_rte): Avoid direct memory_map method calls.
* libvm68k/inst6.cc (m68k_bsr): Avoid direct memory_map method calls.
* bin/main.cc (run_boot): Avoid direct memory_map method calls.
* include/vm68k/memory.h (class memory_map): Renamed from
memory_address_space. Also change all users.
(class memory_map): Add typedef function_code.
(class memory_map): Move the function_code arguments to the end
for methods: get_8, get_16, get_16_unchecked, get_32, get_string,
read, put_8, put_16, put_16_unchecked, put_32, put_string, and
write. Also change all users.
2000-12-13 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* libvx68k/Makefile.am (lib_LTLIBRARIES): Exchange the order of
libvx68k.la and libvx68kdos.la.
* libvx68k/systemrom.cc (initialize_iocs_calls): Renamed from
initialize_iocs_handlers. Also change all users.
* include/vx68k/memory.h (class system_rom): Rename
iocs_handler_function to iocs_call_handler. Rename
iocs_handler_type to iocs_call_type.
(class system_rom): Rename member invalid_iocs_function to
invalid_iocs_call. Also change all users.
(class system_rom): Rename member iocs_handlers to iocs_calls.
Also change all users.
(class system_rom): Rename member set_iocs_handler to
set_iocs_call.
* libvx68k/textvram.cc (fill_plane): New function.
(iocs_txfill): Write code.
* include/vx68k/memory.h (class text_video_memory): Add member
fill_plane.
2000-12-12 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* doc/vx68k.texi (Text Video Memory): New node.
(Graphic Video Memory): New node.
(Memory Management): New node.
(Filesystem): New node.
* bin/Makefile.am (vx68k_LDADD): Add libvx68kdos.la.
* libvx68k/Makefile.am (lib_LTLIBRARIES): Add libvx68kdos.la.
(libvx68kdos_la_LDFLAGS): New macro.
(libvx68kdos_la_SOURCES): New macro.
(libvx68k_la_SOURCES): Remove the DOS-emulation files.
* doc/vx68k.texi (Human68k Emulation): Renamed from Human68k.
(Human68k Emulation): Raise the level.
* libvx68k/systemrom.cc (initialize_iocs_handlers): Renamed from
initialize_iocs_functions. Also change all callers.
(initialize_iocs_handlers, system_rom): Use make_pair.
* include/vx68k/memory.h (class system_rom): Rename
iocs_function_handler to iocs_handler_function. Rename
iocs_function_type to iocs_handler_type.
(class system_rom): Rename member iocs_functions to iocs_handlers.
Also change all users.
(class system_rom): Rename member set_iocs_function to
set_iocs_handler. Also change all users.
* doc/vx68k.texi (X68000 Components): Removed. Raise children's
levels.
(IOCS and System ROM): Rename the title and add documentation.
2000-12-11 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* doc/vx68k.texi: Merge the variable index to the function index.
(Top): Update the menu.
(X68000 Emulation): Rename the title. Add documentation.
(Class machine): Merge into the parent.
(Machine): Add documentation.
(X68000 Components, Main Memory, System ROM): New node.
(Function and Variable Index): Rename the title.
2000-12-10 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* doc/vx68k.texi: Add @direntry commands. Sets flags VERSION,
REVISION, and DATE. Update text. Insert blank lines after node
headings.
(SCC): Update documentation.
(Top): Change the title and update text.
(Instructions): Move @cindex to the head of the paragraph.
* bin/Makefile.am (noinst_LIBRARIES): Moved after bin_PROGRAMS.
(vx68k_SOURCES): Change the order of files.
* libvx68k/Makefile.am (libvx68k_la_SOURCES): Change the order of
files.
2000-12-08 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* libvm68k/Makefile.am (libvm68k_la_SOURCES): Change the order.
2000-12-08 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* doc/vx68k.texi: Fix misspelling. Put @contents in @ifnothtml.
(Top): Move @menu out of @ifnottex.
(Introduction): Modify documentation.
(Command Reference): Modify documentation.
(Invoking vx68k): Modify documentation.
(Class memory): Fix misspelling.
(Context): Modify documentation.
(Execution Unit): Modify documentation.
(Class machine): New node.
2000-09-23 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* libvx68k/systemrom.cc (iocs_contrast): New function.
(initialize_iocs_functions): Add new handler.
2000-09-22 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* libvx68kgtk/gtkconsole.cc: Change timeout parameters.
* libvx68k/sccmem.cc (iocs_ms_curof, iocs_ms_curon, iocs_ms_stat):
New function.
(install_iocs_calls): Add new handlers.
* libvx68k/systemrom.cc (iocs_trap): Push the next instruction's
address for a trap.
* libvx68k/machine.cc (configure): Map adpcm and fdc into the
address space.
(machine): Call install_iocs_calls on adpcm and fdc.
* libvx68k/Makefile.am (libvx68k_la_SOURCES): Add msm6258vmem.cc
and fdcmem.cc.
(libvx68k.gdb): Removed.
(SUFFIXES): New macro.
(.cc.gdb): New rule.
* libvx68k/fdcmem.cc: New file.
(install_iocs_calls, get_8, get_16, put_8, put_16): New function.
* libvx68k/msm6258vmem.cc: New file.
(install_iocs_calls, get_8, get_16, put_8, put_16): New function.
* include/vx68k/machine.h (class machine): Add members adpcm and
fdc.
* include/vx68k/memory.h (class msm6258v_memory): New class.
(class fdc_memory): New class.
2000-09-20 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* include/vm68k/types.h: Add new types uint16_type and
sint16_type. Use int or long for uint32_type if possible. Also
change types for 16-bit and smaller values.
* libvm68k/inst0.cc (m68k_andi_to_ccr, m68k_andi_to_sr,
m68k_bclr_i, m68k_bset_i, m68k_btst_i m68k_ori_to_ccr,
m68k_ori_to_sr): Use ufetch.
* libvm68k/inst4.cc (m68k_movem_r_m, m68k_movem_r_predec,
m68k_movem_m_r, m68k_movem_postinc_r): Use ufetch.
* include/vm68k/addressing.h [basic_index_indirect,
basic_index_pc_indirect] (address, text): Use ufetch for the
extention word.
* include/vm68k/cpu.h (class exec_unit): Move inline definition of
step out of the class definition. Use ufetch.
2000-09-16 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* libvx68k/systemrom.cc (iocs_b_recali): Print message only once.
* libvx68k/textvram.cc (draw_char): Modify the kanji handling.
* libvx68k/machine.cc (machine): Call install_iocs_calls on dmac
and font.
* libvx68k/systemrom.cc: Remove functions moved to fontrom.cc.
(initialize_iocs_functions): Remove the calls to removed
functions.
* libvx68k/fontrom.cc (iocs_defchr, iocs_fntadr, iocs_fntget):
Moved from systemrom.cc.
(install_iocs_calls): New function.
* libvx68k/dmacmem.cc (install_iocs_calls): Changed to member
function.
(dmac_memory): Remove call to install_iocs_calls.
* include/vx68k/memory.h (class dmac_memory): Remove argument of
the constructor. Add member install_iocs_calls.
(class font_rom): Change the value types of get_8 and put_8. Add
member install_iocs_calls.
* libvx68k/machine.cc (machine): Call install_iocs_calls on scc.
* libvx68k/sccmem.cc (install_iocs_calls): Changed to member
function.
(scc_memory): Remove call to install_iocs_calls.
* include/vx68k/memory.h (class scc_memory): Remove argument from
the constructor. Add member install_iocs_calls.
* libvx68k/machine.cc (machine): Call install_iocs_calls for
tvram.
* libvx68k/systemrom.cc: Removed functions moved to textvram.cc.
(initialize_iocs_functions): Remove calls to removed functions.
* libvx68k/textvram.cc: Include cstdio unconditionally.
(iocs_b_clr_st, iocs_b_color, iocs_b_consol, iocs_b_curoff,
iocs_b_curon, iocs_b_locate, iocs_b_putmes, iocs_textput,
iocs_txfill): Moved from systemrom.cc.
(install_iocs_calls): New function.
* include/vx68k/memory.h (class text_video_memory): Change value
types for get_8 and put_8. Add member install_iocs_calls.
* libvm68k/execunit.cc: Include cstdio unconditionally. Remove
moved functions.
(exec_unit): Install instructions using new functions.
* libvm68k/Makefile.am (libvm68k_la_SOURCES): Add inst0.cc,
inst1to3.cc, inst4.cc, inst5.cc, inst6.cc, inst7.cc, inst8.cc,
inst9.cc, inst11.cc, inst12.cc, inst13.cc, and inst14.cc.
(noinst_HEADERS): New macro.
* libvm68k/inst14.cc: New file.
(m68k_asl_r, m68k_asl_i, m68k_asr_r, m68k_asr_i, m68k_lsl_r,
m68k_lsl_i, m68k_lsr_r, m68k_lsr_i, m68k_lsr_m, m68k_rol_r,
m68k_rol_i, m68k_ror_i, m68k_roxr_i): Moved from execunit.cc.
[0] (asrl_r, lslw_r, lsll_r, lslb_i, lslw_i, lsll_i, lsrw_r,
lsrl_r, lsrb_i, lsrw_i, lsrl_i, rolb_r, rolw_i, roll_i, roxrw_i,
roxrl_i): Moved from execunit.cc.
(install_instructions_14): New function.
* libvm68k/inst13.cc: New file.
(m68k_add, m68k_add_m, m68k_adda, m68k_addx_r): Moved from
execunit.cc.
(install_instructions_13): New function.
* libvm68k/inst12.cc: New file.
(m68k_and, m68k_and_m, m68k_exg_d_d, m68k_exg_a_a, m68k_exg_d_a,
m68k_muls, m68k_mulu): Moved from execunit.cc.
[0] (exgl): Moved from execunit.cc.
(install_instructions_12): New function.
* libvm68k/inst11.cc: New file.
(m68k_cmp, m68k_cmpa, m68k_cmpm, m68k_eor_m): Moved from
execunit.cc.
[0] (cmpb, cmpw, cmpl, cmpaw, cmpal, eorb_r, eorw_r, eorl_r):
Moved from execunit.cc.
(install_instructions_11): New function.
* libvm68k/inst9.cc: New file.
(m68k_sub, m68k_sub_m, m68k_suba): Moved from execunit.cc.
[0] (subb, subw, subl): Moved from execunit.cc.
(install_instructions_9): New function.
* libvm68k/inst8.cc: New file.
(m68k_divu, m68k_or, m68k_or_m): Moved from execunit.cc.
[0] (orb, orw, orl): Moved from execunit.cc.
(install_instructions_8): New function.
* libvm68k/inst7.cc: New file.
(m68k_moveq): Moved from execunit.cc.
(install_instructions_7): New function.
* libvm68k/inst6.cc: New file.
(m68k_b, m68k_bra, m68k_bsr): Moved from execunit.cc.
(install_instructions_6): New function.
* libvm68k/inst5.cc: New file.
(m68k_addq, m68k_addq_a, m68k_db, m68k_s, m68k_subq, m68k_subq_a):
Moved from execunit.cc.
[0] (dbf): Moved from execunit.cc.
(install_instructions_5): New function.
* libvm68k/inst4.cc: New file.
(m68k_clr, m68k_ext, m68k_jmp, m68k_jsr, m68k_lea, m68k_link,
m68k_move_from_sr, m68k_move_to_sr, m68k_move_from_usp,
m68k_move_to_usp, m68k_movem_r_m, m68k_movem_r_predec,
m68k_movem_m_r, m68k_movem_postinc_r, m68k_neg, m68k_nop,
m68k_not, m68k_pea, m68k_rte, m68k_rts, m68k_swap, m68k_tst,
m68k_unlk): Moved from execunit.cc.
[0] (clrb, clrw, clrl, extw, extl, moveml_mr, negb, negw, negl,
tstb, tstw, tstl): Moved from execunit.cc.
(install_instructions_4): New function.
* libvm68k/inst1to3.cc: New file.
(m68k_move, m68k_movea): Moved from execunit.cc.
(install_instructions_1, install_instructions_2,
install_instructions_3): New function.
* libvm68k/inst0.cc: New file.
(m68k_addi, m68k_andi, m68k_andi_to_ccr, m68k_andi_to_sr,
m68k_bclr_r, m68k_bclr_i, m68k_bset_r, m68k_bset_i, m68k_btst_r,
m68k_btst_i, m68k_cmpi, m68k_eori, m68k_ori, m68k_ori_to_ccr,
m68k_ori_sr, m68k_subi): Moved from execunit.cc.
[0] (btstb_i, btstl_i, cmpib, cmpiw, cmpil, eoriw, orib, oriw,
oril): Moved from execunit.cc.
(install_instructions_0): New function.
* libvm68k/inst.h: New file.
(struct instruction_map): New struct.
* libvx68k/systemrom.cc (iocs_trap): Call sched_yield.
* libvx68k/textvram.cc (row_changed): New function.
* include/vx68k/memory.h: Include pthread.h.
(class text_video_memory): Add member row_changed.
* libvx68kgtk/gtkconsole.cc: Change TIMEOUT_INTERVAL to 50.
(handle_expose_event): Cast width and height for comparison.
(handle_timeout): Rewrite using scan_row.
(counter): Initialize counter to 1.
* include/vx68k/gtk.h (class gtk_console): Add member counter.
* libvx68k/machine.cc (update_image): #if out.
* include/vx68k/machine.h (class machine): Remove struct
rectangle. Add member screen_changed, row_changed, and scan_row.
Remove member update_image.
(update_image): Removed.
(scan_row): New function.
2000-09-15 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* doc/vx68k.texi: Update.
* include/vm68k/cpu.h (struct byte_size): Add members value_type
and uget.
(struct word_size): Add members value_type, uget, uget_unchecked,
and get_unchecked.
(struct long_word_size): Likewise.
(class context): Add member ufetch. Make member fetch inline and
use Size::get_unchecked.
2000-09-05 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* Version 1.1.3.
* configure.in: Set VERSION to 1.1.3.
* NEWS: Updated.
* doc/vx68k.texi (SCC): New node.
(Machine): Add menu.
* libvx68k/sccmem.cc (set_mouse_position): Limit mouse position in
bounds.
(mouse_motion): Remove call to sched_yield and pthread_testcancel.
(mouse_motion): Return member _mouse_motion.
(track_mouse): Update member _mouse_motion.
(set_mouse_bounds, initialize_mouse): New function.
(iocs_ms_init): Call m->initialize_mouse.
(iocs_ms_limit): Call m->set_mouse_bounds.
(scc_memory): Initialize new members.
* include/vx68k/memory.h (class scc_memory): Add members
mouse_left, mouse_top, mouse_right, mouse_bottom, _mouse_motion,
initialize_mouse, and set_mouse_bounds.
2000-09-04 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* include/vm68k/addressing.h (class data_register): Removed.
(class address_register): Removed.
(class indirect): Removed.
(class postinc_indirect): Removed.
(class predec_indirect): Removed.
(class disp_indirect): Removed.
(class indexed_indirect): Removed.
(class absolute_short): Removed.
(class absolute_long): Removed.
(class disp_pc): Removed.
(class indexed_pc_indirect): Removed.
(class immediate): Removed.
* include/vm68k/cpu.h (struct registers): Replace status_register
with condition_code.
(struct registers): Add members data_register, set_data_register,
set_pc, and advance_pc.
* libvm68k/execunit.cc: Modify log messages.
(m68k_add, m68k_add_m, m68k_adda): Avoid typedefs.
(m68k_add, m68k_add_m, m68k_adda): Modify for new Size::get and
Size::svalue.
(m68k_add, m68k_add_m): Refer extension_size via class.
(andib, andiw, andil, asll_i, asll_r, asrl_i, asrl_r, bcc, beq,
bge, bmi, bne, bclrl_i, bsetl_i, moveb, movew, movel, moveaw,
moveal, moveql_d, rorw_i, subl_r, subal, subib, subil, subqw,
subql): Removed.
(m68k_andi_to_sr, m68k_asr_r, m68k_btst_i, m68k_clr, m68k_cmpa,
m68k_cmpi, m68k_eor_m, m68k_exg_d_d, m68k_exg_a_a, m68k_exg_d_a,
m68k_ext, m68k_lsl_i, m68k_lsl_r, m68k_lsr_i, m68k_lsr_r,
m68k_lsr_m, m68k_movem_m_r, m68k_moveq, m68k_neg, m68k_or,
m68k_ori, m68k_rol_i, m68k_roxr_i, m68k_sub, m68k_subi, m68k_tst):
New function.
(btstb_i, btstl_i, clrb, clrw, clrl, cmpaw, cmpal, cmpib, cmpiw,
cmpil, eorb_r, eorw_r, eorl_r, exgl, extw, extl, lslb_i, lslw_i,
lslw_r, lsll_i, lsll_r, lsrb_i, lsrw_i, lsrw_r, lsrl_i, lsrl_r,
moveml_mr, negb, negw, negl, orb, orw, orl, rolw_i, roll_i,
roxrw_i, subb, subw, subl, tstb, tstw, tstl): #if'd out.
(m68k_bra): Modified from bra.
(m68k_bsr): Modified from bsr.
(m68k_divu): Modified from divuw.
(m68k_jmp): Modified from jmp.
(m68k_jsr): Modified from jsr.
(m68k_lea): Modified from lea.
(m68k_link): Modified from link_a.
(m68k_muls): Modified from mulsw.
(m68k_mulu): Modified from muluw.
(m68k_pea): Modified from pea.
(m68k_rts): Modified from rts.
(m68k_s): Modified from s_b.
(m68k_swap): Modified from swapw.
(m68k_unlk): Modified from unlk_a.
(initialize_instructions): Update for new handlers.
* libvx68k/dmacmem.cc: Include cstdio always.
* libvx68k/crtcmem.cc: Include cstdio always.
* libvx68k/systemrom.cc (iocs_fntadr): Modify test for JIS X 0208
charset.
2000-09-01 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* libvx68kgtk/gtkconsole.cc: Change update timeout to 100ms.
(~gtk_console, gtk_console): Use timeouts for screen update again.
(pvalue): Do not compile if not GDK_IMAGE.
(class pixel_iterator): Change argument type of operator=.
(class pixel_iterator) [!GDK_IMAGE]: Use precomputed table to get
a RGB value.
(gtk_console) [!GDK_IMAGE]: Precompute a RGB table.
2000-08-31 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* libvx68k/systemrom.cc (iocs_trap): Make the IOCS call number
unsigned.
(iocs_trap): Fix stack frames for IOCS call handlers.
* libvx68kgtk/gtkconsole.cc (handle_expose_event): Test the expose
area to avoid drawing outside of the screen area.
* doc/vx68k.texi (Human68k): Updated.
2000-08-30 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* doc/Makefile.am (${srcdir}/vx68k.texi): Removed.
(EXTRA_DIST): Removed.
(MAINTAINERCLEANFILES): Removed.
(DOCBOOK2TEXI): Removed.
* include/vx68k/gtk.h (class gtk_console): Replace #if conditions
using GDK_IMAGE.
* libvx68kgtk/gtkconsole.cc (handle_expose_event): Likewise.
(class pixel_iterator): Remove nested class ref. Modified for new
GdkRgb code.
(class row): Likewise.
(class row_iterator): Likewise.
(handle_timeout, ~gtk_console, gtk_console): Likewise.
* libvx68k/textvram.cc (put_16, put_8): Mark update area only if
really changed.
2000-08-29 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* libvx68k/palettemem.cc (put_16): Set text_color_modified only if
the value really changes.
2000-08-27 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* libvx68kgtk/gtkconsole.cc (handle_expose_event): Use GdkImage.
(handle_timeout): Likewise.
(~gtk_console, gtk_console): Handle GdkImage.
(gtk_console): Use handle_timeout as an idle handler.
* libvx68k/palettemem.cc (get_text_colors): New function.
* include/vx68k/gtk.h (class gtk_console): Add members for
GdkImage.
* include/vx68k/memory.h (class palettes_memory): Add an overload
to get_text_colors.
* include/vx68k/machine.h (update_image): Process in one pass.
* libvx68k/sram.cc: Include <vx68k/memory.h> instead of
<vx68k/machine.h>.
* include/vx68k/machine.h (class machine): Add new template
update_image.
2000-08-26 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* include/vm68k/addressing.h: Return string from member text.
* libvm68k/statusreg.cc: Switch status_register to condition_code.
* libvm68k/execunit.cc: Modify debug outputs.
(run): Remove C-style cast.
(bsetl_i): #if'd out.
(m68k_bset_i): New function template.
(initialize_instructions): Add new handlers.
* include/vm68k/cpu.h (struct byte_size): Add member uvalue.
(struct word_size): Likewise.
(struct long_word_size): Likewise.
(class condition_tester): Move function definitions out of the
class definition. Add member x.
(class condition_code): Renamed from status_register. Typedef
status_register as condition_code. Reformat inline functions.
(struct exception_listener): Removed.
(context::fetch<byte_size>): Use byte_size::svalue.
* libvx68k/sccmem.cc (mouse_motion): Call sched_yield and
pthread_testcancel.
* libvx68k/mainmem.cc (get_16, get_8, get_32, put_16, put_8,
put_32): Use only lower 24 bits of the address.
* libvx68k/systemrom.cc (iocs_txfill): New function.
(initialize_iocs_functions): Add new handler.
* libvm68k/addrspace.cc: Move functions.
(fill): New functions.
(memory_address_space): Change initialization.
* libvm68k/defaultmem.cc (get_16, get_8, put_16, put_8): Mask the
address value.
* libvm68k/memory.cc (generate_bus_error): Removed.
* include/vm68k/addressing.h: Add comment output to text. Remove
C-style casts. Move some functions out of the class definitions.
Make extension_size static.
* include/vm68k/cpu.h (class byte_size): Make svalue to accept a
signed value. Make return values of get signed. Move some inline
functions out of the class definition.
(class word_size): Likewise.
(class long_word_size): Likewise.
(class context): Change types of pfc_cache and dfc_cache. Change
return types of program_fc and data_fc.
(class context): Change return type of member fetch to signed.
* include/vm68k/memory.h (class basic_uint16_iterator): Change
parameter T for pointer type. Also change all users.
(class basic_uint32_iterator): Change parameter T for pointer
type. Also change all users.
[basic_uint16_iterator::ref, basic_uint32_iterator::ref]
(operator=): Remove bit masking.
[basic_uint16_iterator::ref] (operator uint_type): Add bit
masking.
[basic_uint32_iterator::ref] (operator uint32_type): Likewise.
(class memory): Remove member generate_bus_error.
(class memory): Change types for function codes. Also change all
derived classes and all function definitions.
(class memory_address_space): Remove member canonical_address.
Change page_table to a vector. Remove unused struct iterator.
Move some inline functions out of the class definition.
(class memory_address_space): Change return type of find_memory.
Also change all users.
(class memory_address_space): Add new member fill replacing
set_pages. Also change all users.
(class memory_address_space): Rename member getw_aligned and
putw_aligned to get_16_unchecked and put_16_unchecked. Rename
getb, getw, getl, gets, putb, putw, putl, and puts to get_8,
get_16, get_32, get_string, put_8, put_16, put_32, and put_string.
Also change all users.
2000-08-23 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* libvm68k/memory.cc (getw, getl, putw, putl): Removed.
* include/vm68k/memory.h (class basic_uint16_iterator): New class
template replacing class uint16_iterator. Typedef uint16_iterator
and const_uint16_iterator.
(class basic_uint32_iterator): New class template. Typedef
uint32_iterator and const_uint32_iterator.
(getw, getl, putw, putl): Rewrote inline using new iterators.
* libvx68k/sccmem.cc (mouse_position): New function.
(mouse_motion): Moved after set_mouse_position.
(iocs_ms_curgt): Implemented.
* libvx68k/ppimem.cc: Change header comments. Include <cstdio>
always.
(get_8, put_8): Change the value type.
* include/vx68k/memory.h (class scc_memory): Add members
mouse_position. Change the value type for 8-bit data.
2000-08-22 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* libvx68kgtk/gtkconsole.cc (handle_motion_event,
handle_button_event): New function.
(create_widget): Add new signal handlers.
* libvx68k/machine.cc (check_timers): Call scc.track_mouse.
* libvx68k/sccmem.cc (mouse_state, set_mouse_state, mouse_motion,
set_mouse_position, track_mouse): New function.
(iocs_ms_getdt): Implemented.
(~scc_memory): Destroy mutex.
(scc_memory): Initialize new members.
* include/vx68k/gtk.h (class gtk_console): Add members
set_mouse_state, and set_mouse_position.
* include/vx68k/machine.h (class machine): Add members
set_mouse_state, and set_mouse_position.
* include/vx68k/memory.h (class scc_memory): Add new members
mouse_states, _mouse_position, old_mouse_position, mutex,
mouse_state, set_mouse_state, mouse_motion, set_mouse_position,
and track_mouse. Add type point.
2000-08-17 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* libvm68k/Makefile.am (libvm68k_la_SOURCES): Reorder files.
(SUFFIXES): New macro.
(.cc.gdb): New rule.
(libvm68k.gdb): Removed.
* include/vm68k/memory.h: Remove C-style casts. Change PAGE_SHIFT
and ADDRESS_BIT to unsigned. Change PAGE_MASK and NPAGES to
uint32_type.
(enum function_code): Moved into class memory. Also change all
users.
(class uint16_iterator): New class.
2000-08-16 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* include/vm68k/mutex.h (class mutex_lock): New class replacing
auto_lock. Also change all users.
* libvx68k/textvram.cc: Add using auto_lock.
* libvx68k/crtcmem.cc: Likewise.
* libvx68k/palettemem.cc: Likewise.
* libvx68k/opmmem.cc: Likewise.
* include/vx68k/utility.h: Removed.
* include/vm68k/mutex.h: Moved from vx68k/utility.h. Also change
macro names and all users.
2000-08-15 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* bin/main.cc (run_boot): Set status text on exception.
* bin/gtkconwin.cc (set_status_text): New function.
(gtk_console_window): Initialize status_context.
* bin/gtkapp.h (class gtk_console_window): Add new member
status_context and set_status_text.
* libvx68k/sccmem.cc (iocs_ms_curst, iocs_ms_init, iocs_ms_limit,
iocs_set232c): Print a FIXME message only once.
* libvx68k/fontrom.cc (get_16, get_8, put_16, put_8): Use DL
instead of L.
(put_16, put_8): Print a FIXME message only once.
(get_8, put_8): Change the value type.
* libvx68k/systemrom.cc (iocs_trap): Call pthread_testcancel.
(get_16, get_8, put_16, put_8): Print a FIXME message only once.
* libvx68k/sccmem.cc (get_16, get_8, put_16, put_8): Use DL
instead of L. Print a FIXME message only once.
(get_8, put_8): Change the value type.
* libvx68k/machine.cc (configure): Map DMAC.
(machine): Initialize member dmac.
* libvx68k/systemrom.cc (iocs_dmamove): Removed.
(initialize_iocs_functions): Remove installation of the removed
handler.
* libvx68k/Makefile.am (libvx68k_la_SOURCES): Add dmacmem.cc.
* libvx68k/dmacmem.cc: New file.
(get_16, get_8, put_16, put_8, ~dmac_memory, dmac_memory): New
function.
(iocs_dmamove, install_iocs_calls): New function.
* include/vx68k/machine.h (class machine): Add new member dmac.
* include/vx68k/memory.h (class dmac_memory): New class.
* libvx68k/sccmem.cc (install_iocs_calls): Add comments about
missing IOCS calls.
* libvx68k/machine.cc (machine): Add initialization of member scc.
* libvx68k/systemrom.cc (iocs_ms_curgt, iocs_ms_curst,
iocs_ms_getdt, iocs_ms_init, iocs_ms_limit, iocs_set232c):
Removed.
(initialize_iocs_functions): Remove installation of removed
handlers.
* libvx68k/sccmem.cc (~scc_memory, scc_memory): New function.
(install_iocs_calls): New function.
(iocs_ms_curgt, iocs_ms_curst, iocs_ms_getdt, iocs_ms_init,
iocs_ms_limit, iocs_set232c): Moved from systemrom.cc
* include/vx68k/machine.h (class machine): Move member rom before
other components.
* include/vx68k/memory.h (class sram): Moved from machine.h.
(class system_rom): Likewise.
(class scc_memory): Add constructor and destructor.
* include/vx68k/machine.h (class graphics_vram): Removed.
(class sram): Removed.
(class system_rom): Removed.
2000-08-14 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* libvx68k/machine.cc (read_disk): Remove debug message.
* libvx68k/mfpmem.cc (get_16, get_8, put_16, put_8): Use DL
instead of L. Print a FIXME message only once.
* libvx68k/sysportmem.cc (get_16, get_8, put_16, put_8): Use DL
instead of L. Print a FIXME message only once.
* libvx68k/opmmem.cc (get_8, get_16, put_8, put_16): Use DL
instead of L.
* libvx68k/palettemem.cc (get_16, put_16): Use DL instead of L at
the begining of the function.
(get_8): Use DL instead of L.
(put_8): Implemented using get_16 and put_16.
* libvx68k/crtcmem.cc (get_16, get_8): Use DL instead of L.
(put_16, put_8): Print a FIXME message once by fprintf.
* libvx68k/ppimem.cc (get_16, get_8): Use DL instead of L.
(put_16, put_8): Print a FIXME message once by fprintf.
* libvx68k/systemrom.cc (iocs_b_putmes): Modify comments. Remove
C-style cast. Print the FIXME message only once.
(iocs_bitsns, iocs_joyget, iocs_ms_curgt, iocs_ms_getdt,
iocs_b_eject): Modify comments. Print the FIXME message only
once.
* include/vm68k/cpu.h (class status_register): Set member value on
assignment.
* libvx68k/systemrom.cc (get_16): Returns 0xf84f for IOCS area.
(call_iocs): New function.
(dispatch_iocs_function): Removed.
(iocs_trap): Handle program-supplied IOCS call handlers.
(x68k_iocs): New function.
(attach): Use x68k_iocs.
* include/vx68k/machine.h (class system_rom): Remove member
dispatch_iocs_function. Add member call_iocs.
* libvm68k/execunit.cc (m68k_cmpm): New function template
replacing cmpmb.
(initialize_instructions): Install new handlers.
* TODO: Modified.
* libvm68k/execunit.cc (run): Step execution even if an interrupt
is handled.
* libvx68k/systemrom.cc (iocs_dmamove, iocs_fntadr, iocs_fntget):
New function.
(initialize_iocs_functions): Add new handlers.
* libvx68k/fontrom.cc (linear_jisx0208): New function.
(jisx0201_16_offset, jisx0201_24_offset, jisx0208_16_offset,
jisx0208_24_offset): New function.
(copy_data): Copy JIS X0208 data too. Use the new functions.
* include/vx68k/machine.h (class machine): Add new static members
jisx0201_16_address, jisx0201_24_address, jisx0208_16_address, and
jisx0208_24_address.
* include/vx68k/memory.h (class font_rom): Add new static members
jisx0201_16_offset, jisx0201_24_offset, jisx0208_16_offset, and
jisx0208_24_offset.
2000-08-13 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* libvx68k/systemrom.cc (iocs_bitsns, iocs_joyget, iocs_ms_curgt):
New function.
(initialize_iocs_functions): Add new handlers.
* TODO: Modified.
* libvx68k/palettemem.cc (palettes_memory): Initialize more
entries in the text palette.
* libvx68k/systemrom.cc (iocs_ms_getdt): New function.
(initialize_iocs_functions): Add new handler.
* include/vm68k/addressing.h (class basic_index_indirect): Fix a
bug by operators' priority.
(class basic_index_pc_indirect): Likewise.
* libvm68k/execunit.cc (moveml_mr): Add parens around bitwise and
operator.
* libvx68k/systemrom.cc: Replace nana::iocs_call_trace with
nana_iocs_call_trace. Also change all users.
* libvm68k/execunit.cc: Replace nana::instruction_trace with
nana_instruction_trace. Also change all users.
2000-08-12 Kaz Sasayama <Kaz.Sasayama@hypercore.co.jp>
* TODO: Modified.
* libvx68k/systemrom.cc (iocs_vdispst): Set the VDISP counter
properly.
* libvx68k/crtcmem.cc (check_timeouts): Implement the VDISP
counter.
(set_vdisp_interrupt_enabled): Removed.
(set_vdisp_counter_data): New function.
(crtc_memory): Change initialization.
* include/vx68k/machine.h (class machine): Replace member
set_vdisp_interrupt_enabled with set_vdisp_counter_data.
* include/vx68k/memory.h (class crtc_memory): Add members
vdisp_counter_data, vdisp_counter_value, and
set_vdisp_counter_data. Remove members _vdisp_interrupt_enabled,
and set_vdisp_interrupt_enabled. Modify inline definition of
member vdisp_interrupt_enabled.
* TODO: Modified.
* libvx68k/gvideomem.cc: Fix erroneous casts in DL.
* libvx68k/systemrom.cc: Fix erroneous casts in DL. Add variable
iocs_call_trace to switch IOCS call trace.
* libvm68k/execunit.cc: Add variable instruction_trace to switch
instruction trace.
* libvx68k/crtcmem.cc (check_timeouts): Change interrupt vector to
0x4d.
* libvx68k/systemrom.cc (iocs_vdispst): Likewise.
* libvx68k/systemrom.cc (iocs_b_drvchk): Print FIXME message only
once.