vice-emu-commit Mailing List for VICE (Page 21)
Versatile Commodore Emulator
Brought to you by:
blackystardust,
gpz
You can subscribe to this list here.
| 2008 |
Jan
|
Feb
|
Mar
|
Apr
(38) |
May
(60) |
Jun
(122) |
Jul
(148) |
Aug
(178) |
Sep
(151) |
Oct
(131) |
Nov
(208) |
Dec
(129) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2009 |
Jan
(193) |
Feb
(209) |
Mar
(221) |
Apr
(243) |
May
(165) |
Jun
(168) |
Jul
(198) |
Aug
(161) |
Sep
(103) |
Oct
(98) |
Nov
(168) |
Dec
(99) |
| 2010 |
Jan
(263) |
Feb
(156) |
Mar
(57) |
Apr
(93) |
May
(85) |
Jun
(124) |
Jul
(57) |
Aug
(58) |
Sep
(113) |
Oct
(148) |
Nov
(114) |
Dec
(193) |
| 2011 |
Jan
(200) |
Feb
(207) |
Mar
(91) |
Apr
(91) |
May
(142) |
Jun
(104) |
Jul
(115) |
Aug
(137) |
Sep
(266) |
Oct
(91) |
Nov
(85) |
Dec
(186) |
| 2012 |
Jan
(98) |
Feb
(146) |
Mar
(160) |
Apr
(99) |
May
(59) |
Jun
(257) |
Jul
(84) |
Aug
(103) |
Sep
(169) |
Oct
(206) |
Nov
(90) |
Dec
(296) |
| 2013 |
Jan
(294) |
Feb
(130) |
Mar
(36) |
Apr
(14) |
May
(51) |
Jun
(74) |
Jul
(180) |
Aug
(85) |
Sep
(26) |
Oct
(45) |
Nov
(29) |
Dec
(21) |
| 2014 |
Jan
(56) |
Feb
(40) |
Mar
(57) |
Apr
(30) |
May
(31) |
Jun
(11) |
Jul
(107) |
Aug
(135) |
Sep
(142) |
Oct
(195) |
Nov
(139) |
Dec
(133) |
| 2015 |
Jan
(293) |
Feb
(161) |
Mar
(146) |
Apr
(85) |
May
(139) |
Jun
(51) |
Jul
(21) |
Aug
(24) |
Sep
(29) |
Oct
(136) |
Nov
(212) |
Dec
(118) |
| 2016 |
Jan
(119) |
Feb
(165) |
Mar
(229) |
Apr
(219) |
May
(134) |
Jun
(119) |
Jul
(134) |
Aug
(236) |
Sep
(203) |
Oct
(215) |
Nov
(300) |
Dec
(140) |
| 2017 |
Jan
(188) |
Feb
(20) |
Mar
(147) |
Apr
(198) |
May
(26) |
Jun
(21) |
Jul
(67) |
Aug
(219) |
Sep
(209) |
Oct
(194) |
Nov
(144) |
Dec
(99) |
| 2018 |
Jan
(139) |
Feb
(122) |
Mar
(116) |
Apr
(85) |
May
(232) |
Jun
(181) |
Jul
(190) |
Aug
(105) |
Sep
(92) |
Oct
(178) |
Nov
(105) |
Dec
(86) |
| 2019 |
Jan
(119) |
Feb
(79) |
Mar
(74) |
Apr
(117) |
May
(115) |
Jun
(307) |
Jul
(107) |
Aug
(131) |
Sep
(103) |
Oct
(60) |
Nov
(118) |
Dec
(70) |
| 2020 |
Jan
(114) |
Feb
(103) |
Mar
(77) |
Apr
(121) |
May
(193) |
Jun
(110) |
Jul
(214) |
Aug
(210) |
Sep
(179) |
Oct
(260) |
Nov
(237) |
Dec
(334) |
| 2021 |
Jan
(163) |
Feb
(186) |
Mar
(58) |
Apr
(81) |
May
(108) |
Jun
(175) |
Jul
(154) |
Aug
(180) |
Sep
(217) |
Oct
(204) |
Nov
(232) |
Dec
(190) |
| 2022 |
Jan
(253) |
Feb
(134) |
Mar
(229) |
Apr
(190) |
May
(125) |
Jun
(70) |
Jul
(8) |
Aug
(22) |
Sep
(19) |
Oct
(33) |
Nov
(94) |
Dec
(164) |
| 2023 |
Jan
(158) |
Feb
(366) |
Mar
(272) |
Apr
(109) |
May
(198) |
Jun
(226) |
Jul
(200) |
Aug
(94) |
Sep
(108) |
Oct
(62) |
Nov
(175) |
Dec
(116) |
| 2024 |
Jan
(35) |
Feb
(40) |
Mar
(51) |
Apr
(89) |
May
(24) |
Jun
(26) |
Jul
(53) |
Aug
(71) |
Sep
(23) |
Oct
(11) |
Nov
(22) |
Dec
(58) |
| 2025 |
Jan
(26) |
Feb
(40) |
Mar
(107) |
Apr
(39) |
May
(35) |
Jun
(20) |
Jul
(11) |
Aug
(24) |
Sep
(35) |
Oct
(28) |
Nov
|
Dec
|
|
From: <co...@us...> - 2024-08-14 15:44:34
|
Revision: 45305
http://sourceforge.net/p/vice-emu/code/45305
Author: compyx
Date: 2024-08-14 15:44:32 +0000 (Wed, 14 Aug 2024)
Log Message:
-----------
Add libportaudio2 to .deb control files, should fix bug #2062
Modified Paths:
--------------
trunk/vice/build/debian/control.gtk3
trunk/vice/build/debian/control.headless
trunk/vice/build/debian/control.sdl1
trunk/vice/build/debian/control.sdl2
Modified: trunk/vice/build/debian/control.gtk3
===================================================================
--- trunk/vice/build/debian/control.gtk3 2024-08-13 21:27:44 UTC (rev 45304)
+++ trunk/vice/build/debian/control.gtk3 2024-08-14 15:44:32 UTC (rev 45305)
@@ -33,6 +33,7 @@
libogg0,
libpango-1.0-0,
libpangocairo-1.0-0,
+ libportaudio2,
libpcap0.8,
libpng16-16,
libpulse0,
Modified: trunk/vice/build/debian/control.headless
===================================================================
--- trunk/vice/build/debian/control.headless 2024-08-13 21:27:44 UTC (rev 45304)
+++ trunk/vice/build/debian/control.headless 2024-08-14 15:44:32 UTC (rev 45305)
@@ -22,6 +22,7 @@
libmp3lame0,
libmpg123-0,
libogg0,
+ libportaudio2,
libpcap0.8,
libpng16-16,
libpulse0,
Modified: trunk/vice/build/debian/control.sdl1
===================================================================
--- trunk/vice/build/debian/control.sdl1 2024-08-13 21:27:44 UTC (rev 45304)
+++ trunk/vice/build/debian/control.sdl1 2024-08-14 15:44:32 UTC (rev 45305)
@@ -22,6 +22,7 @@
libmp3lame0,
libmpg123-0,
libogg0,
+ libportaudio2,
libpcap0.8,
libpng16-16,
libsdl-1.2-0,
Modified: trunk/vice/build/debian/control.sdl2
===================================================================
--- trunk/vice/build/debian/control.sdl2 2024-08-13 21:27:44 UTC (rev 45304)
+++ trunk/vice/build/debian/control.sdl2 2024-08-14 15:44:32 UTC (rev 45305)
@@ -22,6 +22,7 @@
libmp3lame0,
libmpg123-0,
libogg0,
+ libportaudio2,
libpcap0.8,
libpng16-16,
libsdl2-2.0-0,
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gp...@us...> - 2024-08-13 21:27:46
|
Revision: 45304
http://sourceforge.net/p/vice-emu/code/45304
Author: gpz
Date: 2024-08-13 21:27:44 +0000 (Tue, 13 Aug 2024)
Log Message:
-----------
updated testlist
Modified Paths:
--------------
testprogs/testbench/c64-testlist.in
testprogs/testbench/c64rmk2-testlist.txt
testprogs/testbench/chameleon-testlist.txt
testprogs/testbench/denise-testlist.txt
testprogs/testbench/emu64-testlist.txt
testprogs/testbench/hoxs64-testlist.txt
testprogs/testbench/kernal64c128c64-testlist.txt
testprogs/testbench/kernal64c64-testlist.txt
testprogs/testbench/micro64-testlist.txt
testprogs/testbench/u64-testlist.txt
testprogs/testbench/x128c64-testlist.txt
testprogs/testbench/x64-testlist.txt
testprogs/testbench/x64sc-testlist.txt
testprogs/testbench/yace-testlist.txt
testprogs/testbench/z64kc128c64-testlist.txt
testprogs/testbench/z64kc64-testlist.txt
Modified: testprogs/testbench/c64-testlist.in
===================================================================
--- testprogs/testbench/c64-testlist.in 2024-08-13 20:48:10 UTC (rev 45303)
+++ testprogs/testbench/c64-testlist.in 2024-08-13 21:27:44 UTC (rev 45304)
@@ -552,6 +552,8 @@
../interrupts/irqnmi/,irqnmi-new.prg,exitcode,20000000,cia-new
../interrupts/irqnmi/,irqnmi-old.prg,exitcode,20000000,cia-old
../interrupts/irqnoack/,ackcia.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia2.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia3.prg,exitcode,7000000
../interrupts/irqnoack/,ackraster.prg,exitcode,7000000,expect:timeout
../interrupts/nmitest/,nmitest.prg,interactive,0,comment:repeatedly press RESTORE
../interrupts/nmitest/,nmitest2.prg,interactive,0,comment:repeatedly press RESTORE
Modified: testprogs/testbench/c64rmk2-testlist.txt
===================================================================
--- testprogs/testbench/c64rmk2-testlist.txt 2024-08-13 20:48:10 UTC (rev 45303)
+++ testprogs/testbench/c64rmk2-testlist.txt 2024-08-13 21:27:44 UTC (rev 45304)
@@ -542,6 +542,8 @@
../interrupts/irqnmi/,irqnmi-new.prg,exitcode,20000000,cia-new
../interrupts/irqnmi/,irqnmi-old.prg,exitcode,20000000,cia-old
../interrupts/irqnoack/,ackcia.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia2.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia3.prg,exitcode,7000000
../interrupts/irqnoack/,ackraster.prg,exitcode,7000000,expect:timeout
../interrupts/nmitest/,nmitest.prg,interactive,0,comment:repeatedly press RESTORE
../interrupts/nmitest/,nmitest2.prg,interactive,0,comment:repeatedly press RESTORE
Modified: testprogs/testbench/chameleon-testlist.txt
===================================================================
--- testprogs/testbench/chameleon-testlist.txt 2024-08-13 20:48:10 UTC (rev 45303)
+++ testprogs/testbench/chameleon-testlist.txt 2024-08-13 21:27:44 UTC (rev 45304)
@@ -553,6 +553,8 @@
../interrupts/irqnmi/,irqnmi-new.prg,exitcode,20000000,cia-new
../interrupts/irqnmi/,irqnmi-old.prg,exitcode,20000000,cia-old
../interrupts/irqnoack/,ackcia.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia2.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia3.prg,exitcode,7000000
../interrupts/irqnoack/,ackraster.prg,exitcode,7000000,expect:timeout
../interrupts/nmitest/,nmitest.prg,interactive,0,comment:repeatedly press RESTORE
../interrupts/nmitest/,nmitest2.prg,interactive,0,comment:repeatedly press RESTORE
Modified: testprogs/testbench/denise-testlist.txt
===================================================================
--- testprogs/testbench/denise-testlist.txt 2024-08-13 20:48:10 UTC (rev 45303)
+++ testprogs/testbench/denise-testlist.txt 2024-08-13 21:27:44 UTC (rev 45304)
@@ -553,6 +553,8 @@
../interrupts/irqnmi/,irqnmi-new.prg,exitcode,20000000,cia-new
../interrupts/irqnmi/,irqnmi-old.prg,exitcode,20000000,cia-old
../interrupts/irqnoack/,ackcia.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia2.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia3.prg,exitcode,7000000
../interrupts/irqnoack/,ackraster.prg,exitcode,7000000,expect:timeout
../interrupts/nmitest/,nmitest.prg,interactive,0,comment:repeatedly press RESTORE
../interrupts/nmitest/,nmitest2.prg,interactive,0,comment:repeatedly press RESTORE
Modified: testprogs/testbench/emu64-testlist.txt
===================================================================
--- testprogs/testbench/emu64-testlist.txt 2024-08-13 20:48:10 UTC (rev 45303)
+++ testprogs/testbench/emu64-testlist.txt 2024-08-13 21:27:44 UTC (rev 45304)
@@ -522,6 +522,8 @@
../interrupts/irqdummy/,irqdummy.prg,exitcode,9000000
../interrupts/irqnmi/,irqnmi-old.prg,exitcode,20000000,cia-old
../interrupts/irqnoack/,ackcia.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia2.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia3.prg,exitcode,7000000
../interrupts/irqnoack/,ackraster.prg,exitcode,7000000,expect:timeout
../interrupts/nmitest/,nmitest.prg,interactive,0,comment:repeatedly press RESTORE
../interrupts/nmitest/,nmitest2.prg,interactive,0,comment:repeatedly press RESTORE
Modified: testprogs/testbench/hoxs64-testlist.txt
===================================================================
--- testprogs/testbench/hoxs64-testlist.txt 2024-08-13 20:48:10 UTC (rev 45303)
+++ testprogs/testbench/hoxs64-testlist.txt 2024-08-13 21:27:44 UTC (rev 45304)
@@ -552,6 +552,8 @@
../interrupts/irqnmi/,irqnmi-new.prg,exitcode,20000000,cia-new
../interrupts/irqnmi/,irqnmi-old.prg,exitcode,20000000,cia-old
../interrupts/irqnoack/,ackcia.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia2.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia3.prg,exitcode,7000000
../interrupts/irqnoack/,ackraster.prg,exitcode,7000000,expect:timeout
../interrupts/nmitest/,nmitest.prg,interactive,0,comment:repeatedly press RESTORE
../interrupts/nmitest/,nmitest2.prg,interactive,0,comment:repeatedly press RESTORE
Modified: testprogs/testbench/kernal64c128c64-testlist.txt
===================================================================
--- testprogs/testbench/kernal64c128c64-testlist.txt 2024-08-13 20:48:10 UTC (rev 45303)
+++ testprogs/testbench/kernal64c128c64-testlist.txt 2024-08-13 21:27:44 UTC (rev 45304)
@@ -553,6 +553,8 @@
../interrupts/irqnmi/,irqnmi-new.prg,exitcode,20000000,cia-new
../interrupts/irqnmi/,irqnmi-old.prg,exitcode,20000000,cia-old
../interrupts/irqnoack/,ackcia.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia2.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia3.prg,exitcode,7000000
../interrupts/irqnoack/,ackraster.prg,exitcode,7000000,expect:timeout
../interrupts/nmitest/,nmitest.prg,interactive,0,comment:repeatedly press RESTORE
../interrupts/nmitest/,nmitest2.prg,interactive,0,comment:repeatedly press RESTORE
Modified: testprogs/testbench/kernal64c64-testlist.txt
===================================================================
--- testprogs/testbench/kernal64c64-testlist.txt 2024-08-13 20:48:10 UTC (rev 45303)
+++ testprogs/testbench/kernal64c64-testlist.txt 2024-08-13 21:27:44 UTC (rev 45304)
@@ -553,6 +553,8 @@
../interrupts/irqnmi/,irqnmi-new.prg,exitcode,20000000,cia-new
../interrupts/irqnmi/,irqnmi-old.prg,exitcode,20000000,cia-old
../interrupts/irqnoack/,ackcia.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia2.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia3.prg,exitcode,7000000
../interrupts/irqnoack/,ackraster.prg,exitcode,7000000,expect:timeout
../interrupts/nmitest/,nmitest.prg,interactive,0,comment:repeatedly press RESTORE
../interrupts/nmitest/,nmitest2.prg,interactive,0,comment:repeatedly press RESTORE
Modified: testprogs/testbench/micro64-testlist.txt
===================================================================
--- testprogs/testbench/micro64-testlist.txt 2024-08-13 20:48:10 UTC (rev 45303)
+++ testprogs/testbench/micro64-testlist.txt 2024-08-13 21:27:44 UTC (rev 45304)
@@ -552,6 +552,8 @@
../interrupts/irqnmi/,irqnmi-new.prg,exitcode,20000000,cia-new
../interrupts/irqnmi/,irqnmi-old.prg,exitcode,20000000,cia-old
../interrupts/irqnoack/,ackcia.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia2.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia3.prg,exitcode,7000000
../interrupts/irqnoack/,ackraster.prg,exitcode,7000000,expect:timeout
../interrupts/nmitest/,nmitest.prg,interactive,0,comment:repeatedly press RESTORE
../interrupts/nmitest/,nmitest2.prg,interactive,0,comment:repeatedly press RESTORE
Modified: testprogs/testbench/u64-testlist.txt
===================================================================
--- testprogs/testbench/u64-testlist.txt 2024-08-13 20:48:10 UTC (rev 45303)
+++ testprogs/testbench/u64-testlist.txt 2024-08-13 21:27:44 UTC (rev 45304)
@@ -518,6 +518,8 @@
../interrupts/irqdummy/,irqdummy.prg,exitcode,9000000
../interrupts/irqnmi/,irqnmi-old.prg,exitcode,20000000,cia-old
../interrupts/irqnoack/,ackcia.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia2.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia3.prg,exitcode,7000000
../interrupts/irqnoack/,ackraster.prg,exitcode,7000000,expect:timeout
../interrupts/nmitest/,nmitest.prg,interactive,0,comment:repeatedly press RESTORE
../interrupts/nmitest/,nmitest2.prg,interactive,0,comment:repeatedly press RESTORE
Modified: testprogs/testbench/x128c64-testlist.txt
===================================================================
--- testprogs/testbench/x128c64-testlist.txt 2024-08-13 20:48:10 UTC (rev 45303)
+++ testprogs/testbench/x128c64-testlist.txt 2024-08-13 21:27:44 UTC (rev 45304)
@@ -553,6 +553,8 @@
../interrupts/irqnmi/,irqnmi-new.prg,exitcode,20000000,cia-new
../interrupts/irqnmi/,irqnmi-old.prg,exitcode,20000000,cia-old
../interrupts/irqnoack/,ackcia.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia2.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia3.prg,exitcode,7000000
../interrupts/irqnoack/,ackraster.prg,exitcode,7000000,expect:timeout
../interrupts/nmitest/,nmitest.prg,interactive,0,comment:repeatedly press RESTORE
../interrupts/nmitest/,nmitest2.prg,interactive,0,comment:repeatedly press RESTORE
Modified: testprogs/testbench/x64-testlist.txt
===================================================================
--- testprogs/testbench/x64-testlist.txt 2024-08-13 20:48:10 UTC (rev 45303)
+++ testprogs/testbench/x64-testlist.txt 2024-08-13 21:27:44 UTC (rev 45304)
@@ -553,6 +553,8 @@
../interrupts/irqnmi/,irqnmi-new.prg,exitcode,20000000,cia-new
../interrupts/irqnmi/,irqnmi-old.prg,exitcode,20000000,cia-old
../interrupts/irqnoack/,ackcia.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia2.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia3.prg,exitcode,7000000
../interrupts/irqnoack/,ackraster.prg,exitcode,7000000,expect:timeout
../interrupts/nmitest/,nmitest.prg,interactive,0,comment:repeatedly press RESTORE
../interrupts/nmitest/,nmitest2.prg,interactive,0,comment:repeatedly press RESTORE
Modified: testprogs/testbench/x64sc-testlist.txt
===================================================================
--- testprogs/testbench/x64sc-testlist.txt 2024-08-13 20:48:10 UTC (rev 45303)
+++ testprogs/testbench/x64sc-testlist.txt 2024-08-13 21:27:44 UTC (rev 45304)
@@ -553,6 +553,8 @@
../interrupts/irqnmi/,irqnmi-new.prg,exitcode,20000000,cia-new
../interrupts/irqnmi/,irqnmi-old.prg,exitcode,20000000,cia-old
../interrupts/irqnoack/,ackcia.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia2.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia3.prg,exitcode,7000000
../interrupts/irqnoack/,ackraster.prg,exitcode,7000000,expect:timeout
../interrupts/nmitest/,nmitest.prg,interactive,0,comment:repeatedly press RESTORE
../interrupts/nmitest/,nmitest2.prg,interactive,0,comment:repeatedly press RESTORE
Modified: testprogs/testbench/yace-testlist.txt
===================================================================
--- testprogs/testbench/yace-testlist.txt 2024-08-13 20:48:10 UTC (rev 45303)
+++ testprogs/testbench/yace-testlist.txt 2024-08-13 21:27:44 UTC (rev 45304)
@@ -523,6 +523,8 @@
../interrupts/irqdummy/,irqdummy.prg,exitcode,9000000
../interrupts/irqnmi/,irqnmi-old.prg,exitcode,20000000,cia-old
../interrupts/irqnoack/,ackcia.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia2.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia3.prg,exitcode,7000000
../interrupts/irqnoack/,ackraster.prg,exitcode,7000000,expect:timeout
../interrupts/nmitest/,nmitest.prg,interactive,0,comment:repeatedly press RESTORE
../interrupts/nmitest/,nmitest2.prg,interactive,0,comment:repeatedly press RESTORE
Modified: testprogs/testbench/z64kc128c64-testlist.txt
===================================================================
--- testprogs/testbench/z64kc128c64-testlist.txt 2024-08-13 20:48:10 UTC (rev 45303)
+++ testprogs/testbench/z64kc128c64-testlist.txt 2024-08-13 21:27:44 UTC (rev 45304)
@@ -553,6 +553,8 @@
../interrupts/irqnmi/,irqnmi-new.prg,exitcode,20000000,cia-new
../interrupts/irqnmi/,irqnmi-old.prg,exitcode,20000000,cia-old
../interrupts/irqnoack/,ackcia.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia2.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia3.prg,exitcode,7000000
../interrupts/irqnoack/,ackraster.prg,exitcode,7000000,expect:timeout
../interrupts/nmitest/,nmitest.prg,interactive,0,comment:repeatedly press RESTORE
../interrupts/nmitest/,nmitest2.prg,interactive,0,comment:repeatedly press RESTORE
Modified: testprogs/testbench/z64kc64-testlist.txt
===================================================================
--- testprogs/testbench/z64kc64-testlist.txt 2024-08-13 20:48:10 UTC (rev 45303)
+++ testprogs/testbench/z64kc64-testlist.txt 2024-08-13 21:27:44 UTC (rev 45304)
@@ -553,6 +553,8 @@
../interrupts/irqnmi/,irqnmi-new.prg,exitcode,20000000,cia-new
../interrupts/irqnmi/,irqnmi-old.prg,exitcode,20000000,cia-old
../interrupts/irqnoack/,ackcia.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia2.prg,exitcode,7000000
+../interrupts/irqnoack/,ackcia3.prg,exitcode,7000000
../interrupts/irqnoack/,ackraster.prg,exitcode,7000000,expect:timeout
../interrupts/nmitest/,nmitest.prg,interactive,0,comment:repeatedly press RESTORE
../interrupts/nmitest/,nmitest2.prg,interactive,0,comment:repeatedly press RESTORE
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gp...@us...> - 2024-08-13 20:48:12
|
Revision: 45303
http://sourceforge.net/p/vice-emu/code/45303
Author: gpz
Date: 2024-08-13 20:48:10 +0000 (Tue, 13 Aug 2024)
Log Message:
-----------
add tests that use PLP or CLI instead of RTI
Added Paths:
-----------
testprogs/interrupts/irqnoack/ackcia2.prg
testprogs/interrupts/irqnoack/ackcia2.s
testprogs/interrupts/irqnoack/ackcia3.prg
testprogs/interrupts/irqnoack/ackcia3.s
Added: testprogs/interrupts/irqnoack/ackcia2.prg
===================================================================
(Binary files differ)
Index: testprogs/interrupts/irqnoack/ackcia2.prg
===================================================================
--- testprogs/interrupts/irqnoack/ackcia2.prg 2024-08-12 18:35:31 UTC (rev 45302)
+++ testprogs/interrupts/irqnoack/ackcia2.prg 2024-08-13 20:48:10 UTC (rev 45303)
Property changes on: testprogs/interrupts/irqnoack/ackcia2.prg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/x-commodore-exec
\ No newline at end of property
Added: testprogs/interrupts/irqnoack/ackcia2.s
===================================================================
--- testprogs/interrupts/irqnoack/ackcia2.s (rev 0)
+++ testprogs/interrupts/irqnoack/ackcia2.s 2024-08-13 20:48:10 UTC (rev 45303)
@@ -0,0 +1,151 @@
+
+ * = $0801
+ !word eol,0
+ !byte $9e, $32,$30,$36,$31, 0 ; sys 2061
+eol: !word 0
+
+;------------------------------------------------------------------------------
+
+ sei
+ lda #$35
+ sta $01
+ lda #>irq
+ ldx #<irq
+ sta $ffff
+ stx $fffe
+
+ ldx #0
+- lda #$20
+ sta $0400,x
+ sta $0500,x
+ sta $0600,x
+ sta $0700,x
+ lda #$01
+ sta $d800,x
+ sta $d900,x
+ sta $da00,x
+ sta $db00,x
+ inx
+ bne -
+
+ lda #0 ; all timers off
+ sta $dc0e
+ sta $dc0f
+
+ lda #$00
+ sta $dc05
+ lda #$ff
+ sta $dc04
+
+ lda #%00010001
+ sta $dc0e
+
+ lda #$81
+ sta $dc0d
+
+ lda #$1b
+ sta $d011 ; clear bit 8 of irq raster line
+ lda #$01
+ sta $d01a ; enable raster irq...
+ lda #$5b
+ sta $d012 ; ... at raster line 91
+
+ ; wait for raster irq to trigger at least once
+- cmp $d012
+ bne -
+
+ cli ; enable interrupts
+
+ ; these opcodes will be incorrectly executed
+ sta $0400
+ sta $0401
+
+ sei
+ ; signal failure
+ lda #$ff
+ sta $d7ff
+ lda #2
+ sta $d020
+
+ jmp *
+
+irq:
+ pha
+ lda $d019 ; Raster flag in bit0
+ lsr
+ bcs israster
+
+ lda $dc0d ; ACK CIA1 Irq, TimerA flag in bit0
+ lsr
+ bcs istimer
+
+ inc $0428
+ pla
+ ;rti
+ plp ; pull status, irq should trigger after this
+ sta $0400+(2*40)
+ sei
+ ; signal failure
+ lda #$ff
+ sta $d7ff
+ lda #2
+ sta $d020
+ jmp *
+
+
+istimer:
+ inc $0429
+ pla
+ ;rti
+ plp ; pull status, irq should trigger after this
+ sta $0400+(3*40)
+ sei
+ ; signal failure
+ lda #$ff
+ sta $d7ff
+ lda #2
+ sta $d020
+ jmp *
+
+israster:
+ inc $042a
+
+ lda $dc0d ; ACK CIA1 Irq, TimerA flag in bit0
+ lsr
+ bcs istimer2
+
+ pla
+ ;rti
+ plp ; pull status, irq should trigger after this
+ sta $0400+(4*40)
+ sei
+ ; signal failure
+ lda #$ff
+ sta $d7ff
+ lda #2
+ sta $d020
+ jmp *
+
+istimer2:
+ inc $042c
+
+ bne +
+ ; signal pass
+ lda #$00
+ sta $d7ff
+ lda #5
+ sta $d020
+
+ jmp *
++
+ pla
+ ;rti
+ plp ; pull status, irq should trigger after this
+ sta $0400+(5*40)
+ sei
+ ; signal failure
+ lda #$ff
+ sta $d7ff
+ lda #2
+ sta $d020
+ jmp *
Added: testprogs/interrupts/irqnoack/ackcia3.prg
===================================================================
(Binary files differ)
Index: testprogs/interrupts/irqnoack/ackcia3.prg
===================================================================
--- testprogs/interrupts/irqnoack/ackcia3.prg 2024-08-12 18:35:31 UTC (rev 45302)
+++ testprogs/interrupts/irqnoack/ackcia3.prg 2024-08-13 20:48:10 UTC (rev 45303)
Property changes on: testprogs/interrupts/irqnoack/ackcia3.prg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/x-commodore-exec
\ No newline at end of property
Added: testprogs/interrupts/irqnoack/ackcia3.s
===================================================================
--- testprogs/interrupts/irqnoack/ackcia3.s (rev 0)
+++ testprogs/interrupts/irqnoack/ackcia3.s 2024-08-13 20:48:10 UTC (rev 45303)
@@ -0,0 +1,151 @@
+
+ * = $0801
+ !word eol,0
+ !byte $9e, $32,$30,$36,$31, 0 ; sys 2061
+eol: !word 0
+
+;------------------------------------------------------------------------------
+
+ sei
+ lda #$35
+ sta $01
+ lda #>irq
+ ldx #<irq
+ sta $ffff
+ stx $fffe
+
+ ldx #0
+- lda #$20
+ sta $0400,x
+ sta $0500,x
+ sta $0600,x
+ sta $0700,x
+ lda #$01
+ sta $d800,x
+ sta $d900,x
+ sta $da00,x
+ sta $db00,x
+ inx
+ bne -
+
+ lda #0 ; all timers off
+ sta $dc0e
+ sta $dc0f
+
+ lda #$00
+ sta $dc05
+ lda #$ff
+ sta $dc04
+
+ lda #%00010001
+ sta $dc0e
+
+ lda #$81
+ sta $dc0d
+
+ lda #$1b
+ sta $d011 ; clear bit 8 of irq raster line
+ lda #$01
+ sta $d01a ; enable raster irq...
+ lda #$5b
+ sta $d012 ; ... at raster line 91
+
+ ; wait for raster irq to trigger at least once
+- cmp $d012
+ bne -
+
+ cli ; enable interrupts
+
+ ; these opcodes will be incorrectly executed
+ sta $0400
+ sta $0401
+
+ sei
+ ; signal failure
+ lda #$ff
+ sta $d7ff
+ lda #2
+ sta $d020
+
+ jmp *
+
+irq:
+ pha
+ lda $d019 ; Raster flag in bit0
+ lsr
+ bcs israster
+
+ lda $dc0d ; ACK CIA1 Irq, TimerA flag in bit0
+ lsr
+ bcs istimer
+
+ inc $0428
+ pla
+ ;rti
+ cli ; clear I, irq should trigger after this
+ sei
+ sta $0400+(2*40)
+ ; signal failure
+ lda #$ff
+ sta $d7ff
+ lda #2
+ sta $d020
+ jmp *
+
+
+istimer:
+ inc $0429
+ pla
+ ;rti
+ cli ; clear I, irq should trigger after this
+ sei
+ sta $0400+(3*40)
+ ; signal failure
+ lda #$ff
+ sta $d7ff
+ lda #2
+ sta $d020
+ jmp *
+
+israster:
+ inc $042a
+
+ lda $dc0d ; ACK CIA1 Irq, TimerA flag in bit0
+ lsr
+ bcs istimer2
+
+ pla
+ ;rti
+ cli ; clear I, irq should trigger after this
+ sei
+ sta $0400+(4*40)
+ ; signal failure
+ lda #$ff
+ sta $d7ff
+ lda #2
+ sta $d020
+ jmp *
+
+istimer2:
+ inc $042c
+
+ bne +
+ ; signal pass
+ lda #$00
+ sta $d7ff
+ lda #5
+ sta $d020
+
+ jmp *
++
+ pla
+ ;rti
+ cli ; clear I, irq should trigger after this
+ sei
+ sta $0400+(5*40)
+ ; signal failure
+ lda #$ff
+ sta $d7ff
+ lda #2
+ sta $d020
+ jmp *
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gp...@us...> - 2024-08-12 18:35:38
|
Revision: 45302
http://sourceforge.net/p/vice-emu/code/45302
Author: gpz
Date: 2024-08-12 18:35:31 +0000 (Mon, 12 Aug 2024)
Log Message:
-----------
added quick-setup chapter with some hints for people who come from older winvice :)
Modified Paths:
--------------
trunk/vice/doc/vice.texi
Modified: trunk/vice/doc/vice.texi
===================================================================
--- trunk/vice/doc/vice.texi 2024-08-12 18:34:34 UTC (rev 45301)
+++ trunk/vice/doc/vice.texi 2024-08-12 18:35:31 UTC (rev 45302)
@@ -210,6 +210,8 @@
* Basics:: Simple things you can do.
+* Quick setup:: Some quick hints on setting up VICE.
+
* Settings and resources:: Emulator parameters you can change.
* Machine-specific features:: Peculiar characteristics of the emulators.
@@ -3252,7 +3254,7 @@
-@node Basics, Settings and resources, System files, Top
+@node Basics, Quick setup, System files, Top
@chapter Basic operation
This section describes the basic things you can do once the emulator
@@ -3577,7 +3579,53 @@
only do what you know from the C64 as @code{Run/Stop-Restore}.
Therefore, to really reset a CBM-II use power cycle.
-@node Settings and resources, Machine-specific features, Basics, Top
+@node Quick setup, Settings and resources, Basics, Top
+@chapter Quick setup
+
+This chapter is mostly aimed at people who are used to older VICE releases. The
+default configuration has shifted from "make the emulator fast enough to work
+on consumer hardware" to "pedantic focus on emulation accuracy", which is why
+newer releases have been perceived as "slower" by some people.
+
+However, a couple things can be reverted and "improved" - if better performance
+is what you can afford to trade for a little less emulation accuracy.
+@strong{Note that if you encounter any strange problems, you should always try to
+reset settings to default first.}
+
+@itemize @bullet
+
+@item
+To speed up loading .prg files, enable
+Options->Host->Autostart->Autostart PRG Settings->Autostart mode->Inject into RAM
+(@code{AutostartPrgMode} = 0)
+
+@item
+To speed up loading .d64 files,
+enable Options->Peripherial devices->Drive->Virtual device
+(@code{VirtualDevice8..11} = 1)
+and enable Options->Host->Autostart->Handle True Drive Emulation on autostart
+(@code{AutostartHandleTrueDriveEmulation} = 1)
+
+@item
+To speed up warp mode,
+disable Options->Audio->Sound driver->Enable sound emulation in warpmode
+(@code{SoundEmulateOnWarp} = 0)
+
+@end itemize
+
+Last not least (does not really fit into the above list):
+
+@itemize @bullet
+
+@item
+If you are coming from WinVICE to GTK3, you might want to restore the original
+WinVICE hotkeys. Go to
+Options->Host->Hotkeys->Load From,
+and navigate to data/hotkeys/hotkeys-winvice-legacy.vhk
+
+@end itemize
+
+@node Settings and resources, Machine-specific features, Quick setup, Top
@chapter Settings and resources
In the VICE emulators, all the settings are stored in entities known as
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gp...@us...> - 2024-08-12 18:34:41
|
Revision: 45301
http://sourceforge.net/p/vice-emu/code/45301
Author: gpz
Date: 2024-08-12 18:34:34 +0000 (Mon, 12 Aug 2024)
Log Message:
-----------
some cosmetics
Modified Paths:
--------------
trunk/vice/src/arch/gtk3/novte/vte.cc
trunk/vice/src/plus4/ted-mem.c
Modified: trunk/vice/src/arch/gtk3/novte/vte.cc
===================================================================
--- trunk/vice/src/arch/gtk3/novte/vte.cc 2024-08-12 13:34:42 UTC (rev 45300)
+++ trunk/vice/src/arch/gtk3/novte/vte.cc 2024-08-12 18:34:34 UTC (rev 45301)
@@ -4732,7 +4732,7 @@
int codepoint = ((ch2 & 0x3f) << 6) | (ch3 & 0x3f);
int codeh = codepoint >> 8;
int codel = codepoint & 0xff;
- printf("[A:%04x]", codepoint);
+ /*printf("[A:%04x]", codepoint);*/
switch (codeh) {
case 0: /* uppercase, petscii codes in ranges 0x20-0x7f and 0xa0-0xff */
/* simple petscii -> ascii conversion */
@@ -4783,7 +4783,7 @@
to++;
to++;
}
- printf("%c", ch);
+ /*printf("%c", ch);*/
g_string_append_c(string, ch);
from = ++to;
}
Modified: trunk/vice/src/plus4/ted-mem.c
===================================================================
--- trunk/vice/src/plus4/ted-mem.c 2024-08-12 13:34:42 UTC (rev 45300)
+++ trunk/vice/src/plus4/ted-mem.c 2024-08-12 18:34:34 UTC (rev 45301)
@@ -289,14 +289,14 @@
/* This is the funniest part... handle bad line tricks. */
- if (line == ted.first_dma_line && (value & 0x10) != 0) {
+ if ((line == ted.first_dma_line) && (value & 0x10) != 0) {
ted.allow_bad_lines = 1;
ted.raster.ycounter = 0; /* should be 7 actually */
}
- if (ted.raster.ysmooth != (value & 7)
- && line >= ted.first_dma_line
- && line <= ted.last_dma_line) {
+ if ((ted.raster.ysmooth != (value & 7))
+ && (line >= ted.first_dma_line)
+ && (line <= ted.last_dma_line)) {
ted_badline_check_state(value, cycle, line);
}
@@ -342,7 +342,7 @@
/* If CSEL changes from 0 to 1 at cycle 17, the border is
not turned off and this line is blank. */
- if (cycle == 17 && !(ted.regs[0x07] & 0x8)) {
+ if ((cycle == 17) && !(ted.regs[0x07] & 0x8)) {
raster->blank_this_line = 1;
}
} else {
@@ -365,7 +365,7 @@
/* If CSEL changes from 1 to 0 at cycle 56, the lateral
border is open. */
- if (cycle == 56 && (ted.regs[0x07] & 0x8)
+ if ((cycle == 56) && (ted.regs[0x07] & 0x8)
&& (!raster->blank_enabled || raster->open_left_border)) {
raster->open_right_border = 1;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gp...@us...> - 2024-08-12 13:34:43
|
Revision: 45300
http://sourceforge.net/p/vice-emu/code/45300
Author: gpz
Date: 2024-08-12 13:34:42 +0000 (Mon, 12 Aug 2024)
Log Message:
-----------
keep vice-builder happy
Modified Paths:
--------------
trunk/vice/src/log.c
Modified: trunk/vice/src/log.c
===================================================================
--- trunk/vice/src/log.c 2024-08-12 01:26:22 UTC (rev 45299)
+++ trunk/vice/src/log.c 2024-08-12 13:34:42 UTC (rev 45300)
@@ -62,9 +62,6 @@
*******************************************************************
*/
-static int log_locks_initialized = 0;
-static void log_init_locks(void);
-
#include <pthread.h>
static pthread_mutex_t log_lock;
@@ -80,6 +77,9 @@
#endif /* #ifdef USE_VICE_THREAD */
+static int log_locks_initialized = 0;
+static void log_init_locks(void);
+
static FILE *log_file = NULL;
static char **logs = NULL;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gp...@us...> - 2024-08-12 01:26:24
|
Revision: 45299
http://sourceforge.net/p/vice-emu/code/45299
Author: gpz
Date: 2024-08-12 01:26:22 +0000 (Mon, 12 Aug 2024)
Log Message:
-----------
rework the locking initialization to make sure the mutex is properly set up before first use. a couple adjustments to log output in debug mode. should fix the problems with startup when compiling with --enable-debug. Note you'll have to start the emulators with -debug now to get the full log output (Memory stats and backtraces).
Modified Paths:
--------------
trunk/vice/src/lib.c
trunk/vice/src/lib.h
trunk/vice/src/log.c
Modified: trunk/vice/src/lib.c
===================================================================
--- trunk/vice/src/lib.c 2024-08-11 20:36:37 UTC (rev 45298)
+++ trunk/vice/src/lib.c 2024-08-12 01:26:22 UTC (rev 45299)
@@ -45,61 +45,76 @@
#include "lib.h"
#ifdef DEBUG
-/* enable memory debugging */
-# define LIB_DEBUG
-/* enable pinpointing of memory leaks, don't forget to enable in lib.h */
-# define LIB_DEBUG_PINPOINT
-/* warn on free(NULL) */
-/* #define LIB_DEBUG_WARN_FREE_NULL */
-# if defined(HAVE_EXECINFO_H) && defined(HAVE_BT_SYMBOLS)
-# define LIB_DEBUG_CALLER
-# define DEBUG_BT_MAXDEPTH 16
-# include <execinfo.h>
+# ifdef LIB_DEBUG_BACKTRACE
+# if defined(HAVE_EXECINFO_H) && defined(HAVE_BT_SYMBOLS)
+# define LIB_DEBUG_CALLER
+# define DEBUG_BT_MAXDEPTH 16
+# include <execinfo.h>
+# endif
# endif
#endif
+static log_t log_lib = LOG_DEFAULT;
+
#define LIB_DEBUG_LOCK()
#define LIB_DEBUG_UNLOCK()
-#ifdef LIB_DEBUG
-#define LIB_DEBUG_SIZE 0x10000
-#define LIB_DEBUG_GUARD 0x1000
-#define LIB_DEBUG_TOPMAX 50
+#ifdef USE_VICE_THREAD
+#include <pthread.h>
+static pthread_mutex_t lib_debug_lock = PTHREAD_MUTEX_INITIALIZER;
+#undef LIB_DEBUG_LOCK
+#undef LIB_DEBUG_UNLOCK
+#define LIB_DEBUG_LOCK() { lib_lock_init(); pthread_mutex_lock(&lib_debug_lock); }
+#define LIB_DEBUG_UNLOCK() { pthread_mutex_unlock(&lib_debug_lock); }
+#endif
#ifdef LIB_DEBUG_PINPOINT
-static const char *lib_debug_filename[LIB_DEBUG_SIZE];
-static unsigned int lib_debug_line[LIB_DEBUG_SIZE];
-static const char *lib_debug_top_filename[LIB_DEBUG_TOPMAX];
-static unsigned int lib_debug_top_line[LIB_DEBUG_TOPMAX];
static const char *lib_debug_pinpoint_filename;
static unsigned int lib_debug_pinpoint_line = 0;
#endif
+#define LIB_DEBUG_SIZE 0x10000
+#define LIB_DEBUG_TOPMAX 50
+
+#ifdef DEBUG
static void *lib_debug_address[LIB_DEBUG_SIZE];
+#if defined(LIB_DEBUG_PINPOINT)
+static unsigned int lib_debug_top_size[LIB_DEBUG_TOPMAX];
+#endif
+#if defined(LIB_DEBUG) || defined(LIB_DEBUG_PINPOINT)
static unsigned int lib_debug_size[LIB_DEBUG_SIZE];
-static unsigned int lib_debug_top_size[LIB_DEBUG_TOPMAX];
static unsigned int lib_debug_current_total = 0;
static unsigned int lib_debug_max_total = 0;
+#endif
+#endif /* DEBUG */
+
+#if defined(LIB_DEBUG) || defined(LIB_DEBUG_PINPOINT)
#ifdef LIB_DEBUG_CALLER
+/* NOT if DEBUG only */
static void *lib_debug_bt_caller[LIB_DEBUG_SIZE][DEBUG_BT_MAXDEPTH];
static int lib_debug_bt_numcaller[LIB_DEBUG_SIZE];
#endif
+#endif
+#ifdef LIB_DEBUG
+#ifdef LIB_DEBUG_PINPOINT
+static const char *lib_debug_filename[LIB_DEBUG_SIZE];
+static unsigned int lib_debug_line[LIB_DEBUG_SIZE];
+#endif
+#endif /* LIB_DEBUG */
+
+#if defined(LIB_DEBUG_PINPOINT)
+static const char *lib_debug_top_filename[LIB_DEBUG_TOPMAX];
+static unsigned int lib_debug_top_line[LIB_DEBUG_TOPMAX];
+#endif
+
+#ifdef LIB_DEBUG
#if LIB_DEBUG_GUARD > 0
static char *lib_debug_guard_base[LIB_DEBUG_SIZE];
static unsigned int lib_debug_guard_size[LIB_DEBUG_SIZE];
#endif
+#endif /* LIB_DEBUG */
-#ifdef USE_VICE_THREAD
-#include <pthread.h>
-static pthread_mutex_t lib_debug_lock = PTHREAD_MUTEX_INITIALIZER;
-#undef LIB_DEBUG_LOCK
-#undef LIB_DEBUG_UNLOCK
-#define LIB_DEBUG_LOCK() pthread_mutex_lock(&lib_debug_lock)
-#define LIB_DEBUG_UNLOCK() pthread_mutex_unlock(&lib_debug_lock)
-#endif
-
-
#ifdef DEBUG
/** \brief Flag to enable/debug output on exit of emu/tool
*/
@@ -106,6 +121,7 @@
static int lib_debug_enable_output = 1;
#endif
+static int lib_debug_lock_initialized = 0;
/*----------------------------------------------------------------------------*/
@@ -115,6 +131,7 @@
static void lib_debug_init(void)
{
memset(lib_debug_address, 0, sizeof(lib_debug_address));
+#ifdef LIB_DEBUG
#ifdef LIB_DEBUG_CALLER
memset(lib_debug_bt_caller, 0, sizeof(lib_debug_bt_caller));
memset(lib_debug_bt_numcaller, 0, sizeof(lib_debug_bt_numcaller));
@@ -126,12 +143,33 @@
memset(lib_debug_line, 0, sizeof(lib_debug_line));
memset(lib_debug_top_size, 0, sizeof(lib_debug_top_size));
#endif
-
+#endif /* LIB_DEBUG */
/* Check for memory leaks on exit. */
atexit(lib_debug_check);
}
+#endif /* DEBUG */
+
+/* triggered early by first use of LOCK() */
+static void lib_lock_init(void)
+{
+ if (lib_debug_lock_initialized == 0) {
+ lib_debug_lock_initialized = 1;
+#ifdef USE_VICE_THREAD
+ pthread_mutexattr_t lock_attributes;
+ pthread_mutexattr_init(&lock_attributes);
+ pthread_mutexattr_settype(&lock_attributes, PTHREAD_MUTEX_RECURSIVE);
+ pthread_mutex_init(&lib_debug_lock, &lock_attributes);
#endif
+#ifdef DEBUG
+ lib_debug_init();
+#endif
+ }
+}
+
+#ifdef LIB_DEBUG
+
+#ifdef LIB_DEBUG_PINPOINT
static void lib_debug_add_top(const char *filename, unsigned int line, unsigned int size)
{
unsigned int index, i;
@@ -151,6 +189,7 @@
}
}
}
+#endif /* LIB_DEBUG_PINPOINT */
static void lib_debug_alloc(void *ptr, size_t size, int level)
{
@@ -158,12 +197,12 @@
index = 0;
- while (index < LIB_DEBUG_SIZE && lib_debug_address[index] != NULL) {
+ while ((index < LIB_DEBUG_SIZE) && (lib_debug_address[index] != NULL)) {
index++;
}
if (index == LIB_DEBUG_SIZE) {
- printf("Error: lib_debug_alloc(): Out of debug address slots. (increase LIB_DEBUG_SIZE!)\n");
+ log_error(log_lib, "lib_debug_alloc(): Out of debug address slots. (increase LIB_DEBUG_SIZE!)");
return;
}
@@ -170,10 +209,10 @@
#ifdef LIB_DEBUG_CALLER
lib_debug_bt_numcaller[index] = backtrace(lib_debug_bt_caller[index], DEBUG_BT_MAXDEPTH);
#if 0
- printf("lib_debug_alloc(): Alloc address %p size %i slot %i from %p.\n",
+ log_printf("lib_debug_alloc(): Alloc address %p size %i slot %i from %p.",
ptr, size, index, func);
#endif
-#endif
+#endif /* LIB_DEBUG_CALLER */
lib_debug_address[index] = ptr;
lib_debug_size[index] = (unsigned int)size;
@@ -199,19 +238,19 @@
index = 0;
- while (index < LIB_DEBUG_SIZE && lib_debug_address[index] != ptr) {
+ while ((index < LIB_DEBUG_SIZE) && (lib_debug_address[index] != ptr)) {
index++;
}
if (index == LIB_DEBUG_SIZE) {
#if 0
- printf("lib_debug_free(): Cannot find debug address!\n");
+ log_printf("lib_debug_free(): Cannot find debug address!");
#endif
return;
}
#if 0
- printf("lib_debug_free(): Free address %p size %u slot %u.\n",
+ log_printf("lib_debug_free(): Free address %p size %u slot %u.",
ptr, lib_debug_size[index], index);
#endif
@@ -230,19 +269,22 @@
{
unsigned int index;
+ LIB_DEBUG_LOCK();
+
index = 0;
/* find free slot */
- while (index < LIB_DEBUG_SIZE && lib_debug_guard_base[index] != NULL) {
+ while ((index < LIB_DEBUG_SIZE) && (lib_debug_guard_base[index] != NULL)) {
+ /* log_printf("REJECT BASE %p SLOT %d SIZE %d", lib_debug_guard_base[index], index, lib_debug_guard_size[index]); */
index++;
}
if (index == LIB_DEBUG_SIZE) {
- printf("Error: lib_debug_guard_add(): Out of debug address slots. (increase LIB_DEBUG_SIZE)\n");
+ log_error(log_lib, "lib_debug_guard_add(): Out of debug address slots. (increase LIB_DEBUG_SIZE)");
return;
}
#if 0
- printf("ADD BASE %p SLOT %d SIZE %d\n", ptr, index, size);
+ log_printf("ADD BASE %p SLOT %d SIZE %d", ptr, index, size);
#endif
lib_debug_guard_base[index] = ptr;
lib_debug_guard_size[index] = (unsigned int)size;
@@ -249,6 +291,8 @@
memset(ptr, 0x55, LIB_DEBUG_GUARD);
memset(ptr + LIB_DEBUG_GUARD + size, 0x55, LIB_DEBUG_GUARD);
+
+ LIB_DEBUG_UNLOCK();
}
/* called by lib_debug_libc_free, lib_debug_check (at exit) */
@@ -260,15 +304,15 @@
index = 0;
/* find matching slot */
- while (index < LIB_DEBUG_SIZE && lib_debug_guard_base[index] != (ptr - LIB_DEBUG_GUARD)) {
+ while ((index < LIB_DEBUG_SIZE) && (lib_debug_guard_base[index] != (ptr - LIB_DEBUG_GUARD))) {
index++;
}
if (index == LIB_DEBUG_SIZE) {
#ifdef LIB_DEBUG_PINPOINT
- printf("%s:%u: ", lib_debug_pinpoint_filename, lib_debug_pinpoint_line);
+ log_error(log_lib, "%s:%u: ", lib_debug_pinpoint_filename, lib_debug_pinpoint_line);
#endif
- printf("Error: lib_debug_guard_remove(): Cannot find debug address %p! (make sure to use functions from lib.h, do NOT use lib_free on pointers allocated by other functions.)\n",
+ log_error(log_lib, "lib_debug_guard_remove(): Cannot find debug address %p! (make sure to use functions from lib.h, do NOT use lib_free on pointers allocated by other functions.)",
(void *)(ptr - LIB_DEBUG_GUARD));
return 0;
}
@@ -276,9 +320,9 @@
for (i = 0; i < LIB_DEBUG_GUARD; i++) {
if ((uint8_t)*(ptr - LIB_DEBUG_GUARD + i) != 0x55) {
#ifdef LIB_DEBUG_PINPOINT
- printf("%s:%u: ", lib_debug_pinpoint_filename, lib_debug_pinpoint_line);
+ log_error(log_lib, "%s:%u: ", lib_debug_pinpoint_filename, lib_debug_pinpoint_line);
#endif
- printf("Error: Memory corruption in lower part of base %p!\n", (void *)(ptr - LIB_DEBUG_GUARD));
+ log_error(log_lib, "Memory corruption in lower part of base %p!", (void *)(ptr - LIB_DEBUG_GUARD));
break;
}
}
@@ -285,14 +329,14 @@
for (i = 0; i < LIB_DEBUG_GUARD; i++) {
if (*(ptr + lib_debug_guard_size[index] + i) != 0x55) {
#ifdef LIB_DEBUG_PINPOINT
- printf("%s:%u: ", lib_debug_pinpoint_filename, lib_debug_pinpoint_line);
+ log_error(log_lib, "%s:%u: ", lib_debug_pinpoint_filename, lib_debug_pinpoint_line);
#endif
- printf("Error: Memory corruption in higher part of base %p!\n", (void *)(ptr - LIB_DEBUG_GUARD));
+ log_error(log_lib, "Memory corruption in higher part of base %p!", (void *)(ptr - LIB_DEBUG_GUARD));
break;
}
}
#if 0
- printf("REM BASE %p SLOT %d\n", ptr - LIB_DEBUG_GUARD, index);
+ log_printf("REM BASE %p SLOT %d", ptr - LIB_DEBUG_GUARD, index);
#endif
lib_debug_guard_base[index] = NULL;
return 1;
@@ -304,15 +348,15 @@
index = 0;
- while (index < LIB_DEBUG_SIZE && lib_debug_guard_base[index] != (ptr - LIB_DEBUG_GUARD)) {
+ while ((index < LIB_DEBUG_SIZE) && (lib_debug_guard_base[index] != (ptr - LIB_DEBUG_GUARD))) {
index++;
}
if (index == LIB_DEBUG_SIZE) {
#ifdef LIB_DEBUG_PINPOINT
- printf("%s:%u: ", lib_debug_pinpoint_filename, lib_debug_pinpoint_line);
+ log_error(log_lib, "%s:%u: ", lib_debug_pinpoint_filename, lib_debug_pinpoint_line);
#endif
- printf("Error: lib_debug_guard_size(): Cannot find debug address %p!\n",
+ log_error(log_lib, "lib_debug_guard_size(): Cannot find debug address %p!",
(void *)(ptr - LIB_DEBUG_GUARD));
return 0;
}
@@ -319,7 +363,7 @@
return lib_debug_guard_size[index];
}
-#endif
+#endif /* LIB_DEBUG_GUARD > 0 */
/*----------------------------------------------------------------------------*/
@@ -328,13 +372,13 @@
#if LIB_DEBUG_GUARD > 0
char *ptr;
- ptr = (char *)malloc(size + 2 * LIB_DEBUG_GUARD);
+ ptr = (char *)malloc(size + (2 * LIB_DEBUG_GUARD));
lib_debug_guard_add(ptr, (unsigned int)size);
return (void *)(ptr + LIB_DEBUG_GUARD);
#else
return malloc(size);
-#endif
+#endif /* LIB_DEBUG_GUARD > 0 */
}
static void *lib_debug_libc_calloc(size_t nmemb, size_t size)
@@ -342,7 +386,7 @@
#if LIB_DEBUG_GUARD > 0
char *ptr;
- ptr = (char *)malloc(nmemb * size + 2 * LIB_DEBUG_GUARD);
+ ptr = (char *)malloc(nmemb * size + (2 * LIB_DEBUG_GUARD));
lib_debug_guard_add(ptr, (unsigned int)(nmemb * size));
memset(ptr + LIB_DEBUG_GUARD, 0, nmemb * size);
@@ -350,7 +394,7 @@
return (void *)(ptr + LIB_DEBUG_GUARD);
#else
return calloc(nmemb, size);
-#endif
+#endif /* LIB_DEBUG_GUARD > 0 */
}
static void lib_debug_libc_free(void *ptr)
@@ -366,15 +410,17 @@
#ifdef LIB_DEBUG_WARN_FREE_NULL
else {
#ifdef LIB_DEBUG_PINPOINT
- printf("%s:%u: ", lib_debug_pinpoint_filename, lib_debug_pinpoint_line);
+ log_warning(log_lib, "%s:%u: Pointer passed to lib_debug_libc_free is NULL.",
+ lib_debug_pinpoint_filename, lib_debug_pinpoint_line);
+#else
+ log_warning(log_lib, "Pointer passed to lib_debug_libc_free is NULL.");
#endif
- printf("Warning: Pointer passed to lib_debug_libc_free is NULL.\n");
}
-#endif
+#endif /* LIB_DEBUG_WARN_FREE_NULL */
#else
free(ptr);
-#endif
+#endif /* LIB_DEBUG_GUARD > 0 */
}
static void *lib_debug_libc_realloc(void *ptr, size_t size)
@@ -405,22 +451,24 @@
return (void *)new_ptr;
#else
return realloc(ptr, size);
-#endif
+#endif /* LIB_DEBUG_GUARD > 0 */
}
-#endif
+#endif /* LIB_DEBUG */
/*----------------------------------------------------------------------------*/
#ifdef LIB_DEBUG
-static void printsize(unsigned int size)
+static char *sizestr(unsigned int size)
{
+ static char s[0x10];
if (size > (1024 * 1024)) {
- printf("%uMiB", size / (1024 * 1024));
+ sprintf(s, "%uMiB", size / (1024 * 1024));
} else if (size > (1024)) {
- printf("%uKiB", size / (1024));
+ sprintf(s, "%uKiB", size / (1024));
} else {
- printf("%uB", size);
+ sprintf(s, "%uB", size);
}
+ return s;
}
#endif
@@ -466,11 +514,11 @@
}
#endif
} else {
- printf("Error: lib_debug_leaklist_add(): Out of slots. (increase LIB_DEBUG_LEAKLIST_MAX!)\n");
+ log_error(log_lib, "lib_debug_leaklist_add(): Out of slots. (increase LIB_DEBUG_LEAKLIST_MAX!)");
}
}
-#endif
-#endif
+#endif /* LIB_DEBUG_PINPOINT */
+#endif /* LIB_DEBUG */
#ifdef DEBUG
static void lib_debug_check(void)
@@ -478,14 +526,15 @@
#ifdef LIB_DEBUG
unsigned int index, count;
unsigned int leakbytes;
-#ifdef LIB_DEBUG_CALLER
+#if defined(LIB_DEBUG_CALLER) && defined (LIB_DEBUG_PINPOINT)
char **btstring;
- int btidx, spc;
+ int btidx;
#endif
count = 0;
leakbytes = 0;
+#ifdef LIB_DEBUG_PINPOINT
lib_debug_leaklist_num = 0;
-
+#endif
if (!lib_debug_enable_output) {
return;
}
@@ -496,10 +545,10 @@
#ifdef LIB_DEBUG_PINPOINT
lib_debug_leaklist_add(index);
#else
- printf("Warning: Memory block allocated here was not free'd (Memory leak with size 0x%x at %p).",
+ log_warning(log_lib, "Memory block allocated here was not free'd (Memory leak with size 0x%x at %p).",
lib_debug_size[index], lib_debug_address[index]);
- printf("\n");
-#endif
+ log_printf(" ");
+#endif /* LIB_DEBUG_PINPOINT */
leakbytes += lib_debug_size[index];
#if LIB_DEBUG_GUARD > 0
lib_debug_guard_remove((char *)lib_debug_address[index]);
@@ -508,59 +557,66 @@
}
#ifdef LIB_DEBUG_PINPOINT
- printf("\n");
for (index = 0; index < lib_debug_leaklist_num; index++) {
- printf("%s:%u: Warning: Memory block(s) allocated here was not "
+ log_printf(" ");
+ log_warning(log_lib, "%s:%u: Memory block(s) allocated here was not "
"free'd (Memory leak with size 0x%x at %p).",
lib_debug_leaklist_filename[index], lib_debug_leaklist_line[index],
lib_debug_leaklist_size[index], lib_debug_leaklist_address[index]);
#ifdef LIB_DEBUG_CALLER
- printf("\ncallstack:\n");
+ log_printf(" ");
+ log_printf("callstack:");
btstring = backtrace_symbols(lib_debug_leaklist_bt_caller[index], lib_debug_leaklist_bt_numcaller[index]);
if (btstring == NULL) {
- printf(" lookup failed\n");
+ log_printf(" lookup failed");
} else {
for (btidx = 1; btidx < lib_debug_leaklist_bt_numcaller[index]; btidx++) {
- printf(" ");
- for (spc = 0; spc < btidx; spc++) {
- printf(" ");
- }
- printf("%s\n", btstring[btidx]);
+ char spaces[0x10];
+ memset(spaces, ' ', 0x10);
+ spaces[btidx] = 0;
+ log_printf(" %s%s", spaces, btstring[btidx]);
}
}
free(btstring);
#endif
- printf("\n");
}
-#endif
+#endif /* LIB_DEBUG_PINPOINT */
- printf("\nTotal memory leaks: %u", count);
+ log_printf(" ");
#ifdef LIB_DEBUG_PINPOINT
- printf(" in %u lines", lib_debug_leaklist_num);
+ log_printf("Total memory leaks: %u in %u lines. Total bytes leaked: 0x%x (%s).",
+ count, lib_debug_leaklist_num, leakbytes, sizestr(leakbytes));
+#else
+ log_printf("Total memory leaks: %u. Total bytes leaked: 0x%x (%s).",
+ count, leakbytes, sizestr(leakbytes));
#endif
- printf(". Total bytes leaked: 0x%x (", leakbytes);
- printsize(leakbytes);
- printf(").\n\nmax. total memory that was allocated: 0x%x bytes. (", lib_debug_max_total);
- printsize(lib_debug_max_total);
- printf(")\n");
+ log_printf(" ");
+ log_printf("max. total memory that was allocated: 0x%x bytes. (%s)",
+ lib_debug_max_total, sizestr(lib_debug_max_total));
+
#ifdef LIB_DEBUG_PINPOINT
- printf("\nTop %d largest allocated blocks:\n", LIB_DEBUG_TOPMAX);
+ log_printf(" ");
+ log_printf("Top %d largest allocated blocks:", LIB_DEBUG_TOPMAX);
+ log_printf(" ");
for (index = 0; index < LIB_DEBUG_TOPMAX; index++) {
if (lib_debug_top_size[index]) {
- printf("%8x bytes (", lib_debug_top_size[index]);
- printsize(lib_debug_top_size[index]);
- printf(") allocated at %s:%u\n",
- lib_debug_top_filename[index], lib_debug_top_line[index]);
+ log_printf("%8x bytes (%s) allocated at %s:%u",
+ lib_debug_top_size[index], sizestr(lib_debug_top_size[index]),
+ lib_debug_top_filename[index], lib_debug_top_line[index]);
}
}
#endif
-#endif
+#endif /* LIB_DEBUG */
}
-#endif
+#endif /* DEBUG */
/*----------------------------------------------------------------------------*/
+/* standard memory functions, prefixed by lib_. these will be used directly by
+ other code (instead of the actual standard functions), and indirectly by the
+ wrappers further below. */
+
/* like malloc, but abort on out of memory. */
#ifdef LIB_DEBUG_PINPOINT
static
@@ -747,6 +803,8 @@
}
/*----------------------------------------------------------------------------*/
+/* wrappers for the standard functions, which will be used when
+ LIB_DEBUG_PINPOINT is defined */
#ifdef LIB_DEBUG_PINPOINT
void *lib_malloc_pinpoint(size_t size, const char *name, unsigned int line)
@@ -819,11 +877,10 @@
return result;
}
+#endif /* LIB_DEBUG_PINPOINT */
/*----------------------------------------------------------------------------*/
-#endif
-
/** \brief Return a copy of str with leading and trailing whitespace removed */
char *lib_strdup_trimmed(char *str)
{
@@ -976,19 +1033,9 @@
void lib_init(void)
{
-#ifdef DEBUG
+ log_debug(log_lib, "lib_init()");
+ lib_lock_init();
-#ifdef USE_VICE_THREAD
- {
- pthread_mutexattr_t lock_attributes;
- pthread_mutexattr_init(&lock_attributes);
- pthread_mutexattr_settype(&lock_attributes, PTHREAD_MUTEX_RECURSIVE);
- pthread_mutex_init(&lib_debug_lock, &lock_attributes);
- }
-#endif
-
- lib_debug_init();
-#endif
/*
* set random seed for all actively-used PRNGs from current time, so things
* like random startup delay are actually random, ie different on each
Modified: trunk/vice/src/lib.h
===================================================================
--- trunk/vice/src/lib.h 2024-08-11 20:36:37 UTC (rev 45298)
+++ trunk/vice/src/lib.h 2024-08-12 01:26:22 UTC (rev 45299)
@@ -38,8 +38,22 @@
#include "log.h"
#ifdef DEBUG
-/* memory leak pinpointing, don't forget to enable in lib.c */
+
+/* enable memory debugging */
+#define LIB_DEBUG
+/* enable pinpointing of memory leaks (lib_malloc etc) */
#define LIB_DEBUG_PINPOINT
+
+/* warn on free(NULL) */
+/* #define LIB_DEBUG_WARN_FREE_NULL */
+
+/* show backtrace in caller info */
+#define LIB_DEBUG_BACKTRACE
+
+/* number of extra bytes to allocate before/after a memory block */
+/* #define LIB_DEBUG_GUARD 0x123 */ /* BUGBUG: funky how this breaks stuff */
+#define LIB_DEBUG_GUARD 0x100
+
#endif
void lib_init(void);
@@ -63,7 +77,7 @@
char *lib_strdup_pinpoint(const char *str, const char *name, unsigned int line);
#ifndef COMPILING_LIB_DOT_C
-
+/* overload the lib_xxx functions, EXCEPT we are compiling lib.c itself */
#define lib_malloc(x) lib_malloc_pinpoint(x, __FILE__, __LINE__)
#define lib_free(x) lib_free_pinpoint(x, __FILE__, __LINE__)
#define lib_calloc(x, y) lib_calloc_pinpoint(x, y, __FILE__, __LINE__)
Modified: trunk/vice/src/log.c
===================================================================
--- trunk/vice/src/log.c 2024-08-11 20:36:37 UTC (rev 45298)
+++ trunk/vice/src/log.c 2024-08-12 01:26:22 UTC (rev 45299)
@@ -62,11 +62,14 @@
*******************************************************************
*/
+static int log_locks_initialized = 0;
+static void log_init_locks(void);
+
#include <pthread.h>
static pthread_mutex_t log_lock;
-#define LOCK() pthread_mutex_lock(&log_lock)
-#define UNLOCK() pthread_mutex_unlock(&log_lock)
+#define LOCK() { log_init_locks(); pthread_mutex_lock(&log_lock); }
+#define UNLOCK() { pthread_mutex_unlock(&log_lock); }
#define UNLOCK_AND_RETURN_INT(i) { int result = (i); UNLOCK(); return result; }
#else /* #ifdef USE_VICE_THREAD */
@@ -196,17 +199,26 @@
UNLOCK_AND_RETURN_INT(0);
}
+static void log_init_locks(void)
+{
+ if (log_locks_initialized == 0) {
+#ifdef USE_VICE_THREAD
+ pthread_mutexattr_t lock_attributes;
+ pthread_mutexattr_init(&lock_attributes);
+ pthread_mutexattr_settype(&lock_attributes, PTHREAD_MUTEX_RECURSIVE);
+ pthread_mutex_init(&log_lock, &lock_attributes);
+#endif
+ log_locks_initialized = 1;
+ }
+ return;
+}
+
/* called via main_program()->archdep_init() */
int log_early_init(int argc, char **argv)
{
int i;
-#ifdef USE_VICE_THREAD
- pthread_mutexattr_t lock_attributes;
- pthread_mutexattr_init(&lock_attributes);
- pthread_mutexattr_settype(&lock_attributes, PTHREAD_MUTEX_RECURSIVE);
- pthread_mutex_init(&log_lock, &lock_attributes);
-#endif
+ log_init_locks();
DBG(("log_early_init: %d %s\n", argc, argv[0]));
if (argc > 1) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gp...@us...> - 2024-08-11 20:36:38
|
Revision: 45298
http://sourceforge.net/p/vice-emu/code/45298
Author: gpz
Date: 2024-08-11 20:36:37 +0000 (Sun, 11 Aug 2024)
Log Message:
-----------
missing bit of r45297
Modified Paths:
--------------
trunk/vice/src/Makefile.am
Modified: trunk/vice/src/Makefile.am
===================================================================
--- trunk/vice/src/Makefile.am 2024-08-11 19:04:26 UTC (rev 45297)
+++ trunk/vice/src/Makefile.am 2024-08-11 20:36:37 UTC (rev 45298)
@@ -831,7 +831,6 @@
$(p64_lib) \
$(iecbus_lib) \
$(parallel_lib) \
- $(diag_lib) \
$(vdrive_lib) \
$(sid_dtv_lib) \
$(monitor_lib) \
@@ -842,14 +841,15 @@
$(common_libs) \
$(imagecontents_lib) \
$(resid_dtv_libs) \
+ $(userport_lib) \
$(c64dtvstubs_lib) \
+ $(diag_lib) \
$(joyport_lib) \
$(joystickdrv_lib) \
$(rtc_lib) \
$(hvsc_lib) \
$(hotkeys_lib) \
- $(zmbv_lib)\
- $(userport_lib)
+ $(zmbv_lib)
x64dtv_SOURCES = $(base_sources) $(ps2mouse_sources)
x64dtv_LDADD = $(x64dtv_libs) $(emu_extlibs) @TFE_LIBS@ @NETPLAY_LIBS@ $(X64DTV_RES)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gp...@us...> - 2024-08-11 19:04:28
|
Revision: 45297
http://sourceforge.net/p/vice-emu/code/45297
Author: gpz
Date: 2024-08-11 19:04:26 +0000 (Sun, 11 Aug 2024)
Log Message:
-----------
fix link order and add missing stubs for the case when experimental devices are enabled
Modified Paths:
--------------
trunk/vice/src/c64dtv/Makefile.am
trunk/vice/src/c64dtv/c64dtv-stubs.c
Modified: trunk/vice/src/c64dtv/Makefile.am
===================================================================
--- trunk/vice/src/c64dtv/Makefile.am 2024-08-11 18:57:58 UTC (rev 45296)
+++ trunk/vice/src/c64dtv/Makefile.am 2024-08-11 19:04:26 UTC (rev 45297)
@@ -17,6 +17,7 @@
-I$(top_srcdir)/src/c64 \
-I$(top_srcdir)/src/rs232drv \
-I$(top_srcdir)/src/tapeport \
+ -I$(top_srcdir)/src/datasette \
-I$(top_srcdir)/src/core/rtc
AM_CFLAGS = @VICE_CFLAGS@ @INLINE_UNIT_GROWTH@
Modified: trunk/vice/src/c64dtv/c64dtv-stubs.c
===================================================================
--- trunk/vice/src/c64dtv/c64dtv-stubs.c 2024-08-11 18:57:58 UTC (rev 45296)
+++ trunk/vice/src/c64dtv/c64dtv-stubs.c 2024-08-11 19:04:26 UTC (rev 45297)
@@ -33,6 +33,7 @@
#include "cart/clockport.h"
#include "cartridge.h"
+#include "datasette.h"
#include "ds1307.h"
#include "rtc-58321a.h"
#include "rsuser.h"
@@ -98,6 +99,19 @@
return -1;
}
+void machine_set_tape_write_in(int port, int val)
+{
+}
+void machine_set_tape_motor_in(int port, int val)
+{
+}
+void machine_trigger_flux_change(int port, unsigned int on)
+{
+}
+void machine_set_tape_sense(int port, int sense)
+{
+}
+
#ifdef WINDOWS_COMPILE
void mididrv_ui_reset_device_list(int device)
{
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gp...@us...> - 2024-08-11 18:58:01
|
Revision: 45296
http://sourceforge.net/p/vice-emu/code/45296
Author: gpz
Date: 2024-08-11 18:57:58 +0000 (Sun, 11 Aug 2024)
Log Message:
-----------
missing stubs for when experimental devices are enabled
Modified Paths:
--------------
trunk/vice/src/scpu64/Makefile.am
trunk/vice/src/scpu64/scpu64-stubs.c
Modified: trunk/vice/src/scpu64/Makefile.am
===================================================================
--- trunk/vice/src/scpu64/Makefile.am 2024-08-11 18:40:16 UTC (rev 45295)
+++ trunk/vice/src/scpu64/Makefile.am 2024-08-11 18:57:58 UTC (rev 45296)
@@ -19,6 +19,7 @@
-I$(top_srcdir)/src/joyport \
-I$(top_srcdir)/src/samplerdrv \
-I$(top_srcdir)/src/rs232drv \
+ -I$(top_srcdir)/src/datasette \
-I$(top_srcdir)/src/tapeport
AM_CFLAGS = @VICE_CFLAGS@
Modified: trunk/vice/src/scpu64/scpu64-stubs.c
===================================================================
--- trunk/vice/src/scpu64/scpu64-stubs.c 2024-08-11 18:40:16 UTC (rev 45295)
+++ trunk/vice/src/scpu64/scpu64-stubs.c 2024-08-11 18:57:58 UTC (rev 45296)
@@ -30,6 +30,7 @@
#include "c64mem.h"
#include "pet/petpia.h"
#include "snapshot.h"
+#include "datasette.h"
#include "tap.h"
#include "tape.h"
#include "tapecart.h"
@@ -210,3 +211,16 @@
{
return 0;
}
+
+void machine_set_tape_write_in(int port, int val)
+{
+}
+void machine_set_tape_motor_in(int port, int val)
+{
+}
+void machine_trigger_flux_change(int port, unsigned int on)
+{
+}
+void machine_set_tape_sense(int port, int sense)
+{
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gp...@us...> - 2024-08-11 18:40:17
|
Revision: 45295
http://sourceforge.net/p/vice-emu/code/45295
Author: gpz
Date: 2024-08-11 18:40:16 +0000 (Sun, 11 Aug 2024)
Log Message:
-----------
fix log_debug call
Modified Paths:
--------------
trunk/vice/src/parallel/parallel.c
Modified: trunk/vice/src/parallel/parallel.c
===================================================================
--- trunk/vice/src/parallel/parallel.c 2024-08-11 17:37:03 UTC (rev 45294)
+++ trunk/vice/src/parallel/parallel.c 2024-08-11 18:40:16 UTC (rev 45295)
@@ -653,7 +653,7 @@
#ifdef DEBUG
#define PARALLEL_DEBUG_SET_BUS(type) \
if (debug.ieee) { \
- log_debug(# type "_set_bus(%02x) -> %02x (%02x)", \
+ log_debug(LOG_DEFAULT, # type "_set_bus(%02x) -> %02x (%02x)", \
(unsigned int)b, parallel_bus, ~parallel_bus & 0xffu); \
}
#else
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gp...@us...> - 2024-08-11 17:37:08
|
Revision: 45294
http://sourceforge.net/p/vice-emu/code/45294
Author: gpz
Date: 2024-08-11 17:37:03 +0000 (Sun, 11 Aug 2024)
Log Message:
-----------
fix vic20 test
Modified Paths:
--------------
testprogs/keypad/cx21-vic20.asm
testprogs/keypad/cx21-vic20.prg
Modified: testprogs/keypad/cx21-vic20.asm
===================================================================
--- testprogs/keypad/cx21-vic20.asm 2024-08-11 17:36:38 UTC (rev 45293)
+++ testprogs/keypad/cx21-vic20.asm 2024-08-11 17:37:03 UTC (rev 45294)
@@ -1,10 +1,30 @@
*=$1001
-VIC20_VIA1_PRA = 0x9111
+; The following logic is used:
+;
+; keypad pin write pin read
+; ------- --------- --------
+; 1 1 up 5 POT AY
+; 2 1 up 9 POT AX
+; 3 1 up 6 FIRE
+; 4 2 down 5 POT AY
+; 5 2 down 9 POT AX
+; 6 2 down 6 FIRE
+; 7 3 left 5 POT AY
+; 8 3 left 9 POT AX
+; 9 3 left 6 FIRE
+; * 4 right 5 POT AY
+; 0 4 right 9 POT AX
+; # 4 right 6 FIRE
+
+VIC20_VIA1_PRA = 0x9111 ; bit5-2: fire/down/left/up
VIC20_VIA1_DDRA = 0x9113
-VIC20_VIA2_PRB = 0x9120
+VIC20_VIA2_PRB = 0x9120 ; bit7: right
VIC20_VIA2_DDRB = 0x9122
+POTX = $9008
+POTY = $9009
+
PICJMP = $0203
basic: !by $13,$10,$e0,$07,$9e,$c2,$28,$34,$34,$29,$ac,$32,$35,$36,$aa,$32,$31,$00,$00,$00
@@ -69,6 +89,8 @@
ldx #$f0
stx $020A
+ sei
+
mainloop:
ldx #<print_main_screen
ldy #>print_main_screen
@@ -90,62 +112,62 @@
ldx #$00
cmp #1
bne check_key_2
- ldy #24
+ ldy #<((1*22)+10)
bne invert_key
check_key_2:
cmp #2
bne check_key_1
- ldy #28
+ ldy #<((1*22)+6)
bne invert_key
check_key_1:
cmp #3
bne check_key_6
- ldy #32
+ ldy #<((1*22)+2)
bne invert_key
check_key_6:
cmp #4
bne check_key_5
- ldy #68
+ ldy #<((3*22)+10)
bne invert_key
check_key_5:
cmp #5
bne check_key_4
- ldy #72
+ ldy #<((3*22)+6)
bne invert_key
check_key_4:
cmp #6
bne check_key_9
- ldy #76
+ ldy #<((3*22)+2)
bne invert_key
check_key_9:
cmp #7
bne check_key_8
- ldy #112
+ ldy #<((5*22)+10)
bne invert_key
check_key_8:
cmp #8
bne check_key_7
- ldy #116
+ ldy #<((5*22)+6)
bne invert_key
check_key_7:
cmp #9
bne check_key_hash
- ldy #120
+ ldy #<((5*22)+2)
bne invert_key
check_key_hash:
cmp #10
bne check_key_0
- ldy #156
+ ldy #<((7*22)+10)
bne invert_key
check_key_0:
cmp #11
bne check_key_star
- ldy #160
+ ldy #<((7*22)+6)
bne invert_key
check_key_star:
cmp #12
bne no_key_pressed
- ldy #164
+ ldy #<((7*22)+2)
invert_key:
sty $fb
ldx $2c
@@ -187,100 +209,121 @@
pha
lda VIC20_VIA1_PRA
pha
- lda VIC20_VIA1_DDRA
- and #$c3
- ora #$38
- sta VIC20_VIA1_DDRA
+
lda VIC20_VIA2_DDRB
pha
lda VIC20_VIA2_PRB
pha
+
+ ; fire = input, left/down/up = output
+ lda VIC20_VIA1_DDRA
+ and #%11000011
+ ora #%00011100
+ sta VIC20_VIA1_DDRA
+
+ ; right = output
lda VIC20_VIA2_DDRB
- and #$7f
- ora #$80
+ ;and #$7f
+ ora #%10000000
sta VIC20_VIA2_DDRB
- lda #$80
+
+ ; first row
+ lda #$80 ; right = 1
sta VIC20_VIA2_PRB
- lda #$18
+ lda #$18 ; left = 1, down = 1, up = 0
sta VIC20_VIA1_PRA
+
lda VIC20_VIA1_PRA
- and #$20
+ and #$20 ; check fire
bne native_key_2
ldx #1
bne found_native_key
native_key_2:
- lda $9008
- bne native_key_1
+ lda POTX
+ beq native_key_1
ldx #2
bne found_native_key
native_key_1:
- lda $9009
- bne native_key_6
+ lda POTY
+ beq native_key_6
ldx #3
bne found_native_key
native_key_6:
- lda #$14
+
+ ; second row
+ lda #$14 ; left = 1, down = 0, up = 1
sta VIC20_VIA1_PRA
+
lda VIC20_VIA1_PRA
- and #$20
+ and #$20 ; check fire
bne native_key_5
ldx #4
bne found_native_key
native_key_5:
- lda $9008
- bne native_key_4
+ lda POTX
+ beq native_key_4
ldx #5
bne found_native_key
native_key_4:
- lda $9009
- bne native_key_9
+ lda POTY
+ beq native_key_9
ldx #6
bne found_native_key
native_key_9:
- lda #$0c
+
+ ; third row
+ lda #$0c ; left = 0, down = 1, up = 1
sta VIC20_VIA1_PRA
+
lda VIC20_VIA1_PRA
- and #$20
+ and #$20 ; check fire
bne native_key_8
ldx #7
bne found_native_key
native_key_8:
- lda $9008
- bne native_key_7
+ lda POTX
+ beq native_key_7
ldx #8
bne found_native_key
native_key_7:
- lda $9009
- bne native_key_hash
+ lda POTY
+ beq native_key_hash
ldx #9
bne found_native_key
native_key_hash:
- lda #$00
+
+ ; fourth row
+
+ lda #$00 ; right = 0
sta VIC20_VIA2_PRB
- lda #$1c
+ lda #$1c ; left = 1, down = 1, up = 1
sta VIC20_VIA1_PRA
+
lda VIC20_VIA1_PRA
- and #$20
+ and #$20 ; check fire
bne native_key_0
ldx #10
bne found_native_key
native_key_0:
- lda $9008
- bne native_key_star
+ lda POTX
+ beq native_key_star
ldx #11
bne found_native_key
native_key_star:
- lda $9009
- bne nothing_pressed
+ lda POTY
+ beq nothing_pressed
ldx #12
bne found_native_key
nothing_pressed:
+
ldx #0
found_native_key:
+
pla
sta VIC20_VIA2_PRB
pla
sta VIC20_VIA2_DDRB
+
pla
sta VIC20_VIA1_PRA
pla
@@ -309,16 +352,27 @@
end_loop:
rts
+; KEYPAD KEYMAP KEYS
+; ------------- ----------------
+; | 1 | 2 | 3 | | 1 | 2 | 3 |
+; ------------- ----------------
+; | 4 | 5 | 6 | | 6 | 7 | 8 |
+; ------------- ----------------
+; | 7 | 8 | 9 | | 11 | 12 | 13 |
+; ------------- ----------------
+; | * | 0 | # | | 16 | 17 | 18 |
+; ------------- ----------------
+
main_screen:
!by 147
!by 176,192,192,192,178,192,192,192,178,192,192,192,174,13
- !by 221, 32,'3', 32,221, 32,'2', 32,221, 32,'1', 32,221,13
+ !by 221, 32,'1', 32,221, 32,'2', 32,221, 32,'3', 32,221,13
!by 171,192,192,192,219,192,192,192,219,192,192,192,179,13
- !by 221, 32,'6', 32,221, 32,'5', 32,221, 32,'4', 32,221,13
+ !by 221, 32,'4', 32,221, 32,'5', 32,221, 32,'6', 32,221,13
!by 171,192,192,192,219,192,192,192,219,192,192,192,179,13
- !by 221, 32,'9', 32,221, 32,'8', 32,221, 32,'7', 32,221,13
+ !by 221, 32,'7', 32,221, 32,'8', 32,221, 32,'9', 32,221,13
!by 171,192,192,192,219,192,192,192,219,192,192,192,179,13
- !by 221, 32,'#', 32,221, 32,'0', 32,221, 32,'*', 32,221,13
+ !by 221, 32,'*', 32,221, 32,'0', 32,221, 32,'#', 32,221,13
!by 173,192,192,192,177,192,192,192,177,192,192,192,189,13
!by 13,'A','T','A','R','I',' ','C','X','2','1',' ','K','E','Y','P','A','D',' ','I','N',13
!by 'N','A','T','I','V','E',0
Modified: testprogs/keypad/cx21-vic20.prg
===================================================================
(Binary files differ)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gp...@us...> - 2024-08-11 17:36:43
|
Revision: 45293
http://sourceforge.net/p/vice-emu/code/45293
Author: gpz
Date: 2024-08-11 17:36:38 +0000 (Sun, 11 Aug 2024)
Log Message:
-----------
add comments
Modified Paths:
--------------
testprogs/keypad/cardkey-c64.asm
testprogs/keypad/cardkey-plus4.asm
testprogs/keypad/cardkey-vic20.asm
Modified: testprogs/keypad/cardkey-c64.asm
===================================================================
--- testprogs/keypad/cardkey-c64.asm 2024-08-11 17:26:49 UTC (rev 45292)
+++ testprogs/keypad/cardkey-c64.asm 2024-08-11 17:36:38 UTC (rev 45293)
@@ -172,13 +172,6 @@
jmp read_native_2_code
read_native_1_code:
-; lda $dc00
-; and #$3f
-; ora #$40
-; sta $dc00
-; lda $d41a
-; bne read_key_1
-; rts
read_key_1:
ldx #$7f
stx C64_CIA1_PRA
@@ -186,13 +179,6 @@
rts
read_native_2_code:
-; lda $dc00
-; and #$3f
-; ora #$80
-; sta $dc00
-; lda $d41a
-; bne read_key_2
-; rts
read_key_2:
ldy C64_CIA1_DDRA
ldx #$ff
Modified: testprogs/keypad/cardkey-plus4.asm
===================================================================
--- testprogs/keypad/cardkey-plus4.asm 2024-08-11 17:26:49 UTC (rev 45292)
+++ testprogs/keypad/cardkey-plus4.asm 2024-08-11 17:36:38 UTC (rev 45293)
@@ -21,6 +21,25 @@
jsr show_key
jmp check_loop
+; KEY PRESSED KEY3 KEY2 KEY1 KEY0
+; ----------- ---- ---- ---- ----
+; 0 0 0 0 0
+; 1 0 0 0 1
+; 2 0 0 1 0
+; 3 0 0 1 1
+; 4 0 1 0 0
+; 5 0 1 0 1
+; 6 0 1 1 0
+; 7 0 1 1 1
+; 8 1 0 0 0
+; 9 1 0 0 1
+; + 1 0 1 0
+; - 1 0 1 1
+; / 1 1 0 0
+; * 1 1 0 1
+; . 1 1 1 0
+; Enter 1 1 1 1
+
show_key:
ldy #$00
ldx #$00
Modified: testprogs/keypad/cardkey-vic20.asm
===================================================================
--- testprogs/keypad/cardkey-vic20.asm 2024-08-11 17:26:49 UTC (rev 45292)
+++ testprogs/keypad/cardkey-vic20.asm 2024-08-11 17:36:38 UTC (rev 45293)
@@ -84,6 +84,25 @@
bne check_loop
beq check_loop
+; KEY PRESSED KEY3 KEY2 KEY1 KEY0
+; ----------- ---- ---- ---- ----
+; 0 0 0 0 0
+; 1 0 0 0 1
+; 2 0 0 1 0
+; 3 0 0 1 1
+; 4 0 1 0 0
+; 5 0 1 0 1
+; 6 0 1 1 0
+; 7 0 1 1 1
+; 8 1 0 0 0
+; 9 1 0 0 1
+; + 1 0 1 0
+; - 1 0 1 1
+; / 1 1 0 0
+; * 1 1 0 1
+; . 1 1 1 0
+; Enter 1 1 1 1
+
show_key:
ldy #$00
ldx #$00
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gp...@us...> - 2024-08-11 17:26:54
|
Revision: 45292
http://sourceforge.net/p/vice-emu/code/45292
Author: gpz
Date: 2024-08-11 17:26:49 +0000 (Sun, 11 Aug 2024)
Log Message:
-----------
potx/poty must also be read when no mouse is active, so other devices that attach to the controller ports which use these lines will still work
Modified Paths:
--------------
trunk/vice/src/vic20/vic-mem.c
Modified: trunk/vice/src/vic20/vic-mem.c
===================================================================
--- trunk/vice/src/vic20/vic-mem.c 2024-08-10 22:08:23 UTC (rev 45291)
+++ trunk/vice/src/vic20/vic-mem.c 2024-08-11 17:26:49 UTC (rev 45292)
@@ -291,17 +291,15 @@
#ifdef HAVE_MOUSE
if ((addr == 8) || (addr == 9)) {
- if (_mouse_enabled) {
- if ((maincpu_clk ^ pot_cycle) & ~511) {
- pot_cycle = maincpu_clk & ~511; /* simplistic 512 cycle sampling */
+ if ((maincpu_clk ^ pot_cycle) & ~511) {
+ pot_cycle = maincpu_clk & ~511; /* simplistic 512 cycle sampling */
- if (_mouse_enabled) {
- mouse_poll();
- }
+ if (_mouse_enabled) {
+ mouse_poll();
+ }
- vic.regs[8] = read_joyport_potx();
- vic.regs[9] = read_joyport_poty();
- }
+ vic.regs[8] = read_joyport_potx();
+ vic.regs[9] = read_joyport_poty();
}
}
#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gp...@us...> - 2024-08-10 22:08:25
|
Revision: 45291
http://sourceforge.net/p/vice-emu/code/45291
Author: gpz
Date: 2024-08-10 22:08:23 +0000 (Sat, 10 Aug 2024)
Log Message:
-----------
update testlists
Modified Paths:
--------------
testprogs/testbench/plus4-testlist.in
testprogs/testbench/xplus4-testlist.txt
Modified: testprogs/testbench/plus4-testlist.in
===================================================================
--- testprogs/testbench/plus4-testlist.in 2024-08-10 22:07:58 UTC (rev 45290)
+++ testprogs/testbench/plus4-testlist.in 2024-08-10 22:08:23 UTC (rev 45291)
@@ -13,6 +13,9 @@
./selftest/,,screenshot,10000000,mountcrt:plus4-pass.crt
./selftest/,,screenshot,10000000,mountcrt:plus4-fail.crt,expect:error
################################################################################
+../Plus4/openio/,outrun.prg,exitcode,10000000
+../Plus4/openio/,outrun2.prg,exitcode,10000000
+################################################################################
# Joystick/Mouse
################################################################################
../testjoy/,testjoy_plus4.prg,interactive,0
Modified: testprogs/testbench/xplus4-testlist.txt
===================================================================
--- testprogs/testbench/xplus4-testlist.txt 2024-08-10 22:07:58 UTC (rev 45290)
+++ testprogs/testbench/xplus4-testlist.txt 2024-08-10 22:08:23 UTC (rev 45291)
@@ -14,6 +14,9 @@
./selftest/,,screenshot,10000000,mountcrt:plus4-pass.crt
./selftest/,,screenshot,10000000,mountcrt:plus4-fail.crt,expect:error
################################################################################
+../Plus4/openio/,outrun.prg,exitcode,10000000
+../Plus4/openio/,outrun2.prg,exitcode,10000000
+################################################################################
# Joystick/Mouse
################################################################################
../testjoy/,testjoy_plus4.prg,interactive,0
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gp...@us...> - 2024-08-10 22:08:00
|
Revision: 45290
http://sourceforge.net/p/vice-emu/code/45290
Author: gpz
Date: 2024-08-10 22:07:58 +0000 (Sat, 10 Aug 2024)
Log Message:
-----------
add test(s) related to reading open i/o space
Added Paths:
-----------
testprogs/Plus4/openio/
testprogs/Plus4/openio/Makefile
testprogs/Plus4/openio/outrun.asm
testprogs/Plus4/openio/outrun.prg
testprogs/Plus4/openio/outrun2.asm
testprogs/Plus4/openio/outrun2.prg
testprogs/Plus4/openio/readme.txt
Added: testprogs/Plus4/openio/Makefile
===================================================================
--- testprogs/Plus4/openio/Makefile (rev 0)
+++ testprogs/Plus4/openio/Makefile 2024-08-10 22:07:58 UTC (rev 45290)
@@ -0,0 +1,12 @@
+
+all: outrun.prg outrun2.prg
+
+outrun.prg: outrun.asm
+ acme outrun.asm
+outrun2.prg: outrun2.asm
+ acme outrun2.asm
+
+clean:
+ $(RM) outrun.prg
+ $(RM) outrun2.prg
+
Added: testprogs/Plus4/openio/outrun.asm
===================================================================
--- testprogs/Plus4/openio/outrun.asm (rev 0)
+++ testprogs/Plus4/openio/outrun.asm 2024-08-10 22:07:58 UTC (rev 45290)
@@ -0,0 +1,47 @@
+BORDERCOLOR = $ff19
+SCREENCOLOR = $ff15
+DEBUGREG = $fdcf ; http://plus4world.powweb.com/forum.php?postid=31417#31429
+
+ !to "outrun.prg", cbm
+
+ * = $1001
+
+ !byte $0C, $10, $E4, $07, $9E, $20, $34, $31, $31, $32, $00 ; 10 SYS 4112
+ !byte $00, $00
+
+;------------------------------------------------------------------------------
+
+ *= $1010
+
+ SEI
+
+ LDA #$00 ; black
+ STA BORDERCOLOR
+
+ ; very simple test, which can be found eg in "turbo outrun". reads $fdd0
+ ; in a loop, ORs the values and errors out if the result remains zero
+ ; after 256 rounds
+ ;
+ ; found in turbo outrun at $2190
+ lda $fdd0
+ ldx #0
+-
+ ora $fdd0
+ bne passed
+ dex
+ bne -
+
+failed:
+ LDA #(3 << 4) | 2 ; red
+ STA BORDERCOLOR
+ lda #$ff
+ sta DEBUGREG
+ jmp *
+
+passed:
+ LDA #(3 << 4) | 5 ; green
+ STA BORDERCOLOR
+ lda #$00
+ sta DEBUGREG
+ jmp *
+
Added: testprogs/Plus4/openio/outrun.prg
===================================================================
(Binary files differ)
Index: testprogs/Plus4/openio/outrun.prg
===================================================================
--- testprogs/Plus4/openio/outrun.prg 2024-08-09 20:59:21 UTC (rev 45289)
+++ testprogs/Plus4/openio/outrun.prg 2024-08-10 22:07:58 UTC (rev 45290)
Property changes on: testprogs/Plus4/openio/outrun.prg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/x-commodore-exec
\ No newline at end of property
Added: testprogs/Plus4/openio/outrun2.asm
===================================================================
--- testprogs/Plus4/openio/outrun2.asm (rev 0)
+++ testprogs/Plus4/openio/outrun2.asm 2024-08-10 22:07:58 UTC (rev 45290)
@@ -0,0 +1,45 @@
+BORDERCOLOR = $ff19
+SCREENCOLOR = $ff15
+DEBUGREG = $fdcf ; http://plus4world.powweb.com/forum.php?postid=31417#31429
+
+ !to "outrun2.prg", cbm
+
+ * = $1001
+
+ !byte $0C, $10, $E4, $07, $9E, $20, $34, $31, $31, $32, $00 ; 10 SYS 4112
+ !byte $00, $00
+
+;------------------------------------------------------------------------------
+
+ *= $1010
+
+ SEI
+
+ LDA #$00 ; black
+ STA BORDERCOLOR
+
+ ; very simple test, which can be found eg in "turbo outrun". reads $fdd0
+ ; in a loop, and fails if it does not change in 256 rounds
+ ;
+ ; found in turbo outrun at $104b
+ lda $fdd0
+ ldx #0
+-
+ cmp $fdd0
+ bne passed
+ dex
+ bne -
+
+failed:
+ LDA #(3 << 4) | 2 ; red
+ STA BORDERCOLOR
+ lda #$ff
+ sta DEBUGREG
+ jmp *
+
+passed:
+ LDA #(3 << 4) | 5 ; green
+ STA BORDERCOLOR
+ lda #$00
+ sta DEBUGREG
+ jmp *
Added: testprogs/Plus4/openio/outrun2.prg
===================================================================
(Binary files differ)
Index: testprogs/Plus4/openio/outrun2.prg
===================================================================
--- testprogs/Plus4/openio/outrun2.prg 2024-08-09 20:59:21 UTC (rev 45289)
+++ testprogs/Plus4/openio/outrun2.prg 2024-08-10 22:07:58 UTC (rev 45290)
Property changes on: testprogs/Plus4/openio/outrun2.prg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/x-commodore-exec
\ No newline at end of property
Added: testprogs/Plus4/openio/readme.txt
===================================================================
--- testprogs/Plus4/openio/readme.txt (rev 0)
+++ testprogs/Plus4/openio/readme.txt 2024-08-10 22:07:58 UTC (rev 45290)
@@ -0,0 +1,23 @@
+
+Tests that read from unconnected I/O space.
+
+
+outrun.prg:
+
+"Emulator detection" that can be found in "Turbo Outrun". Checks if subsequent
+reads from unconnected I/O will return always 0. This appears to be tailored
+against older VICE releases which do just that :)
+
+
+outrun2.prg:
+
+Another "Emulator detection" that can be found in "Turbo Outrun" (although
+apparently it is never executed?). Checks if subsequent reads from unconnected
+I/O will always give the same value.
+
+
+Note: similar checks appear to have been used in "Giana Sisters" and "Prince of
+Persia".
+
+
+TODO: (much) more elaborated test(s) that scan the entire memory space
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gp...@us...> - 2024-08-09 20:59:22
|
Revision: 45289
http://sourceforge.net/p/vice-emu/code/45289
Author: gpz
Date: 2024-08-09 20:59:21 +0000 (Fri, 09 Aug 2024)
Log Message:
-----------
damn :) hooray for proper testing!
Modified Paths:
--------------
trunk/vice/src/plus4/ted.c
Modified: trunk/vice/src/plus4/ted.c
===================================================================
--- trunk/vice/src/plus4/ted.c 2024-08-09 20:56:56 UTC (rev 45288)
+++ trunk/vice/src/plus4/ted.c 2024-08-09 20:59:21 UTC (rev 45289)
@@ -502,10 +502,11 @@
screen_addr = ((ted.regs[0x14] & 0xf8) << 8) | 0x400;
screen_base = mem_get_tedmem_base((screen_addr >> 14) | cpu_romsel)
+ (screen_addr & 0x3fff);
+#if 0
if (cpu_romsel && (screen_addr < 0x8000)) {
screen_base = mem_get_open_space();
}
-
+#endif
TED_DEBUG_REGISTER(("\tVideo memory at $%04X", screen_addr));
bitmap_addr = (ted.regs[0x12] & 0x38) << 10;
@@ -530,10 +531,11 @@
color_addr = ((ted.regs[0x14] & 0xf8) << 8);
color_base = mem_get_tedmem_base((color_addr >> 14) | cpu_romsel)
+ (color_addr & 0x3fff);
+#if 0
if (cpu_romsel && (color_addr < 0x8000)) {
color_base = mem_get_open_space();
}
-
+#endif
TED_DEBUG_REGISTER(("\tColor memory at $%04X", color_addr));
tmp = TED_RASTER_CHAR(cycle);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gp...@us...> - 2024-08-09 20:56:58
|
Revision: 45288
http://sourceforge.net/p/vice-emu/code/45288
Author: gpz
Date: 2024-08-09 20:56:56 +0000 (Fri, 09 Aug 2024)
Log Message:
-----------
oopsi :)
Modified Paths:
--------------
trunk/vice/src/plus4/ted.c
Modified: trunk/vice/src/plus4/ted.c
===================================================================
--- trunk/vice/src/plus4/ted.c 2024-08-09 20:51:50 UTC (rev 45287)
+++ trunk/vice/src/plus4/ted.c 2024-08-09 20:56:56 UTC (rev 45288)
@@ -502,8 +502,8 @@
screen_addr = ((ted.regs[0x14] & 0xf8) << 8) | 0x400;
screen_base = mem_get_tedmem_base((screen_addr >> 14) | cpu_romsel)
+ (screen_addr & 0x3fff);
- if (cpu_romsel && (screen_base < 0x8000)) {
- screen_base = mem_get_open_space(screen_addr);
+ if (cpu_romsel && (screen_addr < 0x8000)) {
+ screen_base = mem_get_open_space();
}
TED_DEBUG_REGISTER(("\tVideo memory at $%04X", screen_addr));
@@ -512,7 +512,7 @@
bitmap_base = mem_get_tedmem_base((bitmap_addr >> 14) | video_romsel)
+ (bitmap_addr & 0x3fff);
if (video_romsel && (bitmap_addr < 0x8000)) {
- bitmap_base = mem_get_open_space(bitmap_addr);
+ bitmap_base = mem_get_open_space();
}
TED_DEBUG_REGISTER(("\tBitmap memory at $%04X", bitmap_addr));
@@ -522,7 +522,7 @@
char_base = mem_get_tedmem_base((char_addr >> 14) | video_romsel)
+ (char_addr & 0x3fff);
if (video_romsel && (char_addr < 0x8000)) {
- char_base = mem_get_open_space(char_addr);
+ char_base = mem_get_open_space();
}
TED_DEBUG_REGISTER(("\tUser-defined character set at $%04X", char_addr));
@@ -530,8 +530,8 @@
color_addr = ((ted.regs[0x14] & 0xf8) << 8);
color_base = mem_get_tedmem_base((color_addr >> 14) | cpu_romsel)
+ (color_addr & 0x3fff);
- if (cpu_romsel && (color_base < 0x8000)) {
- color_base = mem_get_open_space(color_addr);
+ if (cpu_romsel && (color_addr < 0x8000)) {
+ color_base = mem_get_open_space();
}
TED_DEBUG_REGISTER(("\tColor memory at $%04X", color_addr));
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gp...@us...> - 2024-08-09 20:51:52
|
Revision: 45287
http://sourceforge.net/p/vice-emu/code/45287
Author: gpz
Date: 2024-08-09 20:51:50 +0000 (Fri, 09 Aug 2024)
Log Message:
-----------
improve the case when the TED is reading from floating bus. workaround for bug #1896, fixes bug #2050, improves bug #1991
Modified Paths:
--------------
trunk/vice/src/plus4/plus4io.c
trunk/vice/src/plus4/plus4mem.c
trunk/vice/src/plus4/plus4mem.h
trunk/vice/src/plus4/ted.c
trunk/vice/src/plus4/tedtypes.h
Modified: trunk/vice/src/plus4/plus4io.c
===================================================================
--- trunk/vice/src/plus4/plus4io.c 2024-08-09 14:33:55 UTC (rev 45286)
+++ trunk/vice/src/plus4/plus4io.c 2024-08-09 20:51:50 UTC (rev 45287)
@@ -39,6 +39,7 @@
#include "monitor.h"
#include "plus4mem.h"
#include "resources.h"
+#include "tedtypes.h"
#include "types.h"
#include "uiapi.h"
#include "util.h"
@@ -337,18 +338,19 @@
current = current->next;
}
- /* no valid I/O source was read, return phi1 */
+ /* no valid I/O source was read, return open space */
if (io_source_valid == 0) {
- return read_unused(addr);
+ return mem_read_open_space(addr);
}
/* only one valid I/O source was read, return value */
if (io_source_valid == 1) {
return firstval;
}
+
/* more than one I/O source was read, handle collision */
if (io_source_collision_handling == IO_COLLISION_METHOD_DETACH_ALL) {
io_source_msg_detach_all(addr, io_source_counter, list);
- return read_unused(addr);
+ return mem_read_open_space(addr);
} else if (io_source_collision_handling == IO_COLLISION_METHOD_DETACH_LAST) {
io_source_msg_detach_last(addr, io_source_counter, list, lowest_order);
return realval;
@@ -356,7 +358,7 @@
io_source_log_collisions(addr, io_source_counter, list);
return realval;
}
- return read_unused(addr);
+ return mem_read_open_space(addr);
}
/* peek from I/O area with no side-effects */
@@ -375,7 +377,7 @@
current = current->next;
}
- return read_unused(addr);
+ return mem_read_open_space(addr);
}
static inline void io_store(io_source_list_t *list, uint16_t addr, uint8_t value)
@@ -494,7 +496,8 @@
uint8_t plus4io_fd00_read(uint16_t addr)
{
DBGRW(("IO: io-fd00 r %04x\n", addr));
- return io_read(&plus4io_fd00_head, addr);
+ ted.last_cpu_val = io_read(&plus4io_fd00_head, addr);
+ return ted.last_cpu_val;
}
uint8_t plus4io_fd00_peek(uint16_t addr)
@@ -506,6 +509,7 @@
void plus4io_fd00_store(uint16_t addr, uint8_t value)
{
DBGRW(("IO: io-fd00 w %04x %02x\n", addr, value));
+ ted.last_cpu_val = value;
io_store(&plus4io_fd00_head, addr, value);
}
@@ -512,7 +516,8 @@
uint8_t plus4io_fe00_read(uint16_t addr)
{
DBGRW(("IO: io-fe00 r %04x\n", addr));
- return io_read(&plus4io_fe00_head, addr);
+ ted.last_cpu_val = io_read(&plus4io_fe00_head, addr);
+ return ted.last_cpu_val;
}
uint8_t plus4io_fe00_peek(uint16_t addr)
@@ -524,6 +529,7 @@
void plus4io_fe00_store(uint16_t addr, uint8_t value)
{
DBGRW(("IO: io-fe00 w %04x %02x\n", addr, value));
+ ted.last_cpu_val = value;
io_store(&plus4io_fe00_head, addr, value);
}
Modified: trunk/vice/src/plus4/plus4mem.c
===================================================================
--- trunk/vice/src/plus4/plus4mem.c 2024-08-09 14:33:55 UTC (rev 45286)
+++ trunk/vice/src/plus4/plus4mem.c 2024-08-09 20:51:50 UTC (rev 45287)
@@ -55,8 +55,10 @@
#include "resources.h"
#include "tapeport.h"
#include "ted.h"
+#include "tedtypes.h"
#include "ted-mem.h"
#include "types.h"
+#include "mos6510.h"
static int hard_reset_flag = 1;
@@ -121,11 +123,13 @@
RAMC, RAMC, RAMC, RAMC },
/* 0000-3fff, ROM selected */
+ /* FIXME: this should be "open", ie read the last value from the bus */
{ RAM0, RAM0, RAM0, RAM0,
RAM0, RAM0, RAM0, RAM0,
RAM0, RAM0, RAM0, RAM0,
RAM0, RAM0, RAM0, RAM0 },
/* 4000-7fff, ROM selected */
+ /* FIXME: this should be "open", ie read the last value from the bus */
{ RAM4, RAM4, RAM4, RAM4,
RAM4, RAM4, RAM4, RAM4,
RAM4, RAM4, RAM4, RAM4,
@@ -145,7 +149,11 @@
extromhi3, extromhi3, extromhi3, extromhi3 }
};
-
+/*
+ segment:
+ bit 0-1: 2 upper bits of address
+ bit 2: ROM select (0: RAM, 1: ROM)
+*/
uint8_t *mem_get_tedmem_base(unsigned int segment)
{
return chargen_tab[segment][mem_config >> 1];
@@ -254,13 +262,17 @@
switch ((uint8_t)addr) {
case 0:
case 1:
- return mem_proc_port_read(addr);
+ ted.last_cpu_val = mem_proc_port_read(addr);
+ break;
+ default:
+ if (!cs256k_enabled) {
+ ted.last_cpu_val = mem_ram[addr];
+ } else {
+ ted.last_cpu_val = cs256k_read(addr);
+ }
+ break;
}
- if (!cs256k_enabled) {
- return mem_ram[addr];
- } else {
- return cs256k_read(addr);
- }
+ return ted.last_cpu_val;
}
void zero_store(uint16_t addr, uint8_t value)
@@ -267,6 +279,8 @@
{
addr &= 0xff;
+ ted.last_cpu_val = value;
+
switch ((uint8_t)addr) {
case 0:
if (pport.dir != value) {
@@ -348,12 +362,14 @@
{
addr &= 0xff;
monitor_watch_push_load_addr(addr, e_comp_space);
- return mem_read_tab[mem_config][0](addr);
+ ted.last_cpu_val = mem_read_tab[mem_config][0](addr);
+ return ted.last_cpu_val;
}
static void zero_store_watch(uint16_t addr, uint8_t value)
{
addr &= 0xff;
+ ted.last_cpu_val = value;
monitor_watch_push_store_addr(addr, e_comp_space);
mem_write_tab[mem_config][0](addr, value);
}
@@ -361,12 +377,14 @@
static uint8_t read_watch(uint16_t addr)
{
monitor_watch_push_load_addr(addr, e_comp_space);
- return mem_read_tab[mem_config][addr >> 8](addr);
+ ted.last_cpu_val = mem_read_tab[mem_config][addr >> 8](addr);
+ return ted.last_cpu_val;
}
static void store_watch(uint16_t addr, uint8_t value)
{
+ ted.last_cpu_val = value;
monitor_watch_push_store_addr(addr, e_comp_space);
mem_write_tab[mem_config][addr >> 8](addr, value);
}
@@ -381,31 +399,37 @@
static uint8_t ram_read(uint16_t addr)
{
- return mem_ram[addr];
+ ted.last_cpu_val = mem_ram[addr];
+ return ted.last_cpu_val;
}
static uint8_t ram_read_32k(uint16_t addr)
{
- return mem_ram[addr & 0x7fff];
+ ted.last_cpu_val = mem_ram[addr & 0x7fff];
+ return ted.last_cpu_val;
}
static uint8_t ram_read_16k(uint16_t addr)
{
- return mem_ram[addr & 0x3fff];
+ ted.last_cpu_val = mem_ram[addr & 0x3fff];
+ return ted.last_cpu_val;
}
static void ram_store(uint16_t addr, uint8_t value)
{
+ ted.last_cpu_val = value;
mem_ram[addr] = value;
}
static void ram_store_32k(uint16_t addr, uint8_t value)
{
+ ted.last_cpu_val = value;
mem_ram[addr & 0x7fff] = value;
}
static void ram_store_16k(uint16_t addr, uint8_t value)
{
+ ted.last_cpu_val = value;
mem_ram[addr & 0x3fff] = value;
}
@@ -423,6 +447,51 @@
return _mem_read_tab_ptr[addr >> 8](addr);
}
+/* this should return the data floating on the bus (CPU reads the bus) */
+uint8_t mem_read_open_space(uint16_t addr)
+{
+ /* FIXME: this is less than correct :) */
+
+ /* YAPE uses this if "clockingState == TDS" */
+ unsigned int pc = reg_pc;
+ if ((pc ^ addr) & 0xff00) {
+ return ted.last_cpu_val;
+ }
+ return addr >> 8;
+}
+
+/* HACK: the following is an ugly hack, which is needed because of how the non-sc
+ architecture works. Much of the TED emulation works on pointers that are
+ not reassigned/updated on ever access, which would be required to wrap to
+ the above function as needed. */
+
+/* NOTE: fortunately only the TED fetching is affected, so the difference made by
+ the pattern below is only on the visual result, and can not be detected
+ by the CPU in any way - that probably means that "close" is "good enough". */
+
+static uint8_t open_space[64 * 1024];
+static int open_space_initizialized = 0;
+
+uint8_t *mem_get_open_space(void)
+{
+ /* FIXME: this is even lesser than less correct :) */
+
+ int addr;
+ if (open_space_initizialized) {
+ for (addr = 0; addr < 0x10000; addr++) {
+ /* HACK: we can't really produce a "correct" pattern here. So this
+ is just randomly tweaked a little to produce somewhat not
+ completely stupid results in the tests */
+ open_space[addr] = ((addr >> 8) ^ 0xaa) ^ (addr ^ 0x55);
+ if ((addr & 7) == 0) {
+ if ((addr % (40 * 8 * 2)) < (40 * 8)) { open_space[addr] = 0x00; }
+ if ((addr % (40 * 8 * 2)) >= (40 * 8)) { open_space[addr] = 0xff; }
+ }
+ }
+ }
+ return open_space;
+}
+
/* ------------------------------------------------------------------------- */
/*
@@ -437,51 +506,57 @@
static uint8_t h256k_ram_ffxx_read(uint16_t addr)
{
if ((addr >= 0xff20) && (addr != 0xff3e) && (addr != 0xff3f)) {
- return h256k_read(addr);
+ ted.last_cpu_val = h256k_read(addr);
+ } else {
+ ted.last_cpu_val = ted_read(addr);
}
-
- return ted_read(addr);
+ return ted.last_cpu_val;
}
static uint8_t cs256k_ram_ffxx_read(uint16_t addr)
{
if ((addr >= 0xff20) && (addr != 0xff3e) && (addr != 0xff3f)) {
- return cs256k_read(addr);
+ ted.last_cpu_val = cs256k_read(addr);
+ } else {
+ ted.last_cpu_val = ted_read(addr);
}
-
- return ted_read(addr);
+ return ted.last_cpu_val;
}
static uint8_t ram_ffxx_read(uint16_t addr)
{
if ((addr >= 0xff20) && (addr != 0xff3e) && (addr != 0xff3f)) {
- return ram_read(addr);
+ ted.last_cpu_val = ram_read(addr);
+ } else {
+ ted.last_cpu_val = ted_read(addr);
}
-
- return ted_read(addr);
+ return ted.last_cpu_val;
}
static uint8_t ram_ffxx_read_32k(uint16_t addr)
{
if ((addr >= 0xff20) && (addr != 0xff3e) && (addr != 0xff3f)) {
- return ram_read_32k(addr);
+ ted.last_cpu_val = ram_read_32k(addr);
+ } else {
+ ted.last_cpu_val = ted_read(addr);
}
-
- return ted_read(addr);
+ return ted.last_cpu_val;
}
static uint8_t ram_ffxx_read_16k(uint16_t addr)
{
if ((addr >= 0xff20) && (addr != 0xff3e) && (addr != 0xff3f)) {
- return ram_read_16k(addr);
+ ted.last_cpu_val = ram_read_16k(addr);
+ } else {
+ ted.last_cpu_val = ted_read(addr);
}
-
- return ted_read(addr);
+ return ted.last_cpu_val;
}
static void h256k_ram_ffxx_store(uint16_t addr, uint8_t value)
{
+ ted.last_cpu_val = value;
if (addr < 0xff20 || addr == 0xff3e || addr == 0xff3f) {
ted_store(addr, value);
} else {
@@ -491,6 +566,7 @@
static void cs256k_ram_ffxx_store(uint16_t addr, uint8_t value)
{
+ ted.last_cpu_val = value;
if (addr < 0xff20 || addr == 0xff3e || addr == 0xff3f) {
ted_store(addr, value);
} else {
@@ -500,6 +576,7 @@
static void ram_ffxx_store(uint16_t addr, uint8_t value)
{
+ ted.last_cpu_val = value;
if (addr < 0xff20 || addr == 0xff3e || addr == 0xff3f) {
ted_store(addr, value);
} else {
@@ -509,6 +586,7 @@
static void ram_ffxx_store_32k(uint16_t addr, uint8_t value)
{
+ ted.last_cpu_val = value;
if (addr < 0xff20 || addr == 0xff3e || addr == 0xff3f) {
ted_store(addr, value);
} else {
@@ -518,6 +596,7 @@
static void ram_ffxx_store_16k(uint16_t addr, uint8_t value)
{
+ ted.last_cpu_val = value;
if (addr < 0xff20 || addr == 0xff3e || addr == 0xff3f) {
ted_store(addr, value);
} else {
@@ -532,14 +611,16 @@
static uint8_t rom_ffxx_read(uint16_t addr)
{
if (addr >= 0xff20) {
- return plus4memrom_rom_read(addr);
+ ted.last_cpu_val = plus4memrom_rom_read(addr);
+ } else {
+ ted.last_cpu_val = ted_read(addr);
}
-
- return ted_read(addr);
+ return ted.last_cpu_val;
}
static void rom_ffxx_store(uint16_t addr, uint8_t value)
{
+ ted.last_cpu_val = value;
if (addr < 0xff20 || addr == 0xff3e || addr == 0xff3f) {
ted_store(addr, value);
} else {
@@ -549,6 +630,7 @@
static void h256k_rom_ffxx_store(uint16_t addr, uint8_t value)
{
+ ted.last_cpu_val = value;
if (addr < 0xff20 || addr == 0xff3e || addr == 0xff3f) {
ted_store(addr, value);
} else {
@@ -558,6 +640,7 @@
static void cs256k_rom_ffxx_store(uint16_t addr, uint8_t value)
{
+ ted.last_cpu_val = value;
if (addr < 0xff20 || addr == 0xff3e || addr == 0xff3f) {
ted_store(addr, value);
} else {
@@ -567,6 +650,7 @@
static void rom_ffxx_store_32k(uint16_t addr, uint8_t value)
{
+ ted.last_cpu_val = value;
if (addr < 0xff20 || addr == 0xff3e || addr == 0xff3f) {
ted_store(addr, value);
} else {
@@ -576,6 +660,7 @@
static void rom_ffxx_store_16k(uint16_t addr, uint8_t value)
{
+ ted.last_cpu_val = value;
if (addr < 0xff20 || addr == 0xff3e || addr == 0xff3f) {
ted_store(addr, value);
} else {
@@ -583,18 +668,6 @@
}
}
-/* FIXME: this always returns 0x00, but it should return the
- last data floating on the bus. (cpu/ted/dma) */
-uint8_t read_unused(uint16_t addr)
-{
- return 0;
-}
-
-static void mem_config_rom_set_store(uint16_t addr, uint8_t value)
-{
- mem_config_rom_set((addr & 0xf) << 1);
-}
-
/* ------------------------------------------------------------------------- */
static void set_write_hook(int config, int page, store_func_t *f)
@@ -1068,7 +1141,7 @@
if (addr >= 0xfe00 && addr <= 0xfeff) {
return plus4io_fe00_peek(addr);
}
- return read_unused(addr);
+ return mem_read_open_space(addr);
}
/* read i/o with side-effects */
@@ -1086,7 +1159,7 @@
return plus4io_fe00_read(addr);
}
- return read_unused(addr);
+ return mem_read_open_space(addr);
}
/* read memory without side-effects */
@@ -1351,6 +1424,11 @@
{ "CART-2", "CART-2" } /* 0xfddf */
};
+static void mem_config_rom_set_store(uint16_t addr, uint8_t value)
+{
+ mem_config_rom_set((addr & 0xf) << 1);
+}
+
static int memconfig_dump(void)
{
mon_out("$8000-$BFFF: %s\n", (mem_config & 1) ? mem_config_table[mem_config >> 1].mem_8000 : "RAM");
@@ -1359,8 +1437,6 @@
return 0;
}
-/* ------------------------------------------------------------------------- */
-
static io_source_t mem_config_device = {
"MEMCONFIG", /* name of the chip */
IO_DETACH_NEVER, /* chip is never involved in collisions, so no detach */
@@ -1378,6 +1454,8 @@
IO_MIRROR_NONE /* NO mirroring */
};
+/* ------------------------------------------------------------------------- */
+
static io_source_t pio1_with_mirrors_device = {
"PIO1", /* name of the chip */
IO_DETACH_NEVER, /* chip is never involved in collisions, so no detach */
Modified: trunk/vice/src/plus4/plus4mem.h
===================================================================
--- trunk/vice/src/plus4/plus4mem.h 2024-08-09 14:33:55 UTC (rev 45286)
+++ trunk/vice/src/plus4/plus4mem.h 2024-08-09 20:51:50 UTC (rev 45287)
@@ -84,7 +84,8 @@
void plus4io_init(void);
void plus4_pio1_init(int block);
-uint8_t read_unused(uint16_t addr);
+uint8_t mem_read_open_space(uint16_t addr);
+uint8_t *mem_get_open_space(void);
void store_bank_io(uint16_t addr, uint8_t byte);
Modified: trunk/vice/src/plus4/ted.c
===================================================================
--- trunk/vice/src/plus4/ted.c 2024-08-09 14:33:55 UTC (rev 45286)
+++ trunk/vice/src/plus4/ted.c 2024-08-09 20:51:50 UTC (rev 45287)
@@ -502,6 +502,9 @@
screen_addr = ((ted.regs[0x14] & 0xf8) << 8) | 0x400;
screen_base = mem_get_tedmem_base((screen_addr >> 14) | cpu_romsel)
+ (screen_addr & 0x3fff);
+ if (cpu_romsel && (screen_base < 0x8000)) {
+ screen_base = mem_get_open_space(screen_addr);
+ }
TED_DEBUG_REGISTER(("\tVideo memory at $%04X", screen_addr));
@@ -508,6 +511,9 @@
bitmap_addr = (ted.regs[0x12] & 0x38) << 10;
bitmap_base = mem_get_tedmem_base((bitmap_addr >> 14) | video_romsel)
+ (bitmap_addr & 0x3fff);
+ if (video_romsel && (bitmap_addr < 0x8000)) {
+ bitmap_base = mem_get_open_space(bitmap_addr);
+ }
TED_DEBUG_REGISTER(("\tBitmap memory at $%04X", bitmap_addr));
@@ -515,6 +521,9 @@
| (ted.regs[0x07] & 0x80)) ? 0xf8 : 0xfc)) << 8;
char_base = mem_get_tedmem_base((char_addr >> 14) | video_romsel)
+ (char_addr & 0x3fff);
+ if (video_romsel && (char_addr < 0x8000)) {
+ char_base = mem_get_open_space(char_addr);
+ }
TED_DEBUG_REGISTER(("\tUser-defined character set at $%04X", char_addr));
@@ -521,10 +530,12 @@
color_addr = ((ted.regs[0x14] & 0xf8) << 8);
color_base = mem_get_tedmem_base((color_addr >> 14) | cpu_romsel)
+ (color_addr & 0x3fff);
+ if (cpu_romsel && (color_base < 0x8000)) {
+ color_base = mem_get_open_space(color_addr);
+ }
TED_DEBUG_REGISTER(("\tColor memory at $%04X", color_addr));
-
tmp = TED_RASTER_CHAR(cycle);
/* FIXME */
Modified: trunk/vice/src/plus4/tedtypes.h
===================================================================
--- trunk/vice/src/plus4/tedtypes.h 2024-08-09 14:33:55 UTC (rev 45286)
+++ trunk/vice/src/plus4/tedtypes.h 2024-08-09 20:51:50 UTC (rev 45287)
@@ -342,8 +342,12 @@
/* Video chip capabilities. */
struct video_chip_cap_s *video_chip_cap;
+ /* Last (data) value read or written by the CPU */
+ uint8_t last_cpu_val;
+
unsigned int int_num;
};
+
typedef struct ted_s ted_t;
extern ted_t ted;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gp...@us...> - 2024-08-09 14:33:57
|
Revision: 45286
http://sourceforge.net/p/vice-emu/code/45286
Author: gpz
Date: 2024-08-09 14:33:55 +0000 (Fri, 09 Aug 2024)
Log Message:
-----------
open memory test, provided by durandal
Added Paths:
-----------
testprogs/Plus4/openmem/
testprogs/Plus4/openmem/Makefile
testprogs/Plus4/openmem/plus4_left_emu_right.jpg
testprogs/Plus4/openmem/readme.txt
testprogs/Plus4/openmem/ted-open.asm
testprogs/Plus4/openmem/ted-open.prg
Added: testprogs/Plus4/openmem/Makefile
===================================================================
--- testprogs/Plus4/openmem/Makefile (rev 0)
+++ testprogs/Plus4/openmem/Makefile 2024-08-09 14:33:55 UTC (rev 45286)
@@ -0,0 +1,8 @@
+
+all: ted-open.prg
+
+ted-open.prg: ted-open.asm
+ acme ted-open.asm
+
+clean:
+ $(RM) ted-open.prg
Added: testprogs/Plus4/openmem/plus4_left_emu_right.jpg
===================================================================
(Binary files differ)
Index: testprogs/Plus4/openmem/plus4_left_emu_right.jpg
===================================================================
--- testprogs/Plus4/openmem/plus4_left_emu_right.jpg 2024-08-09 13:30:27 UTC (rev 45285)
+++ testprogs/Plus4/openmem/plus4_left_emu_right.jpg 2024-08-09 14:33:55 UTC (rev 45286)
Property changes on: testprogs/Plus4/openmem/plus4_left_emu_right.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/jpeg
\ No newline at end of property
Added: testprogs/Plus4/openmem/readme.txt
===================================================================
--- testprogs/Plus4/openmem/readme.txt (rev 0)
+++ testprogs/Plus4/openmem/readme.txt 2024-08-09 14:33:55 UTC (rev 45286)
@@ -0,0 +1,28 @@
+related to https://sourceforge.net/p/vice-emu/bugs/1896/
+
+When setting TED to display a bitmap from an address in the $0000-$7FFF range,
+but bit 2 of register $FF12 is set to 1 (fetch bitmap and char data from ROM),
+a Plus4 displays the last value left in the data bus.
+
+
+ted_openspace.prg:
+
+Displays a couple of bitmaps in different memory configurations:
+
+Use the C= key to toggle between a bitmap at $2000, below the ROM range, and
+another at $A000
+
+The CTRL key toggles the mapping of ROM for CPU and TED attribute/video matrix
+in the $8000-$FFFF range
+
+RUN/STOP toggles bit 2 of $FF12
+
+r45284: xplus4 displays the data present in RAM instead of the last value left in the data bus.
+
+
+plus4_left_emu_right.jpg:
+
+Shows the difference between a real Plus4 on the left and xplus4 on the right.
+The 3rd and 4th row show the incorrect behaviour of xplus4, the actual pattern
+being displayed depends on the code being executed.
+
Added: testprogs/Plus4/openmem/ted-open.asm
===================================================================
--- testprogs/Plus4/openmem/ted-open.asm (rev 0)
+++ testprogs/Plus4/openmem/ted-open.asm 2024-08-09 14:33:55 UTC (rev 45286)
@@ -0,0 +1,168 @@
+
+; Test open address space
+; Bitmap 1 at $2000 with attributes at $0800 thick black and white vertical lines
+; Bitmap 2 at $A000 with attributes as $8000 thin dark and light green vertical lines
+; Use C= key to toggle bitmaps
+; RUN/STOP to toggle TED reading bitmap from RAM or ROM
+; CTRL to toggle ROM/RAM for CPU and TED attributes in $8000-$FFFF
+;
+; Border colors:
+; Black = Bitmap at $2000 RAM, ROM mapped in for CPU/attributes in $8000-$FFFF
+; Grey = Bitmap at $2000 RAM, RAM mapped in for CPU/attributes in $8000-$FFFF
+; Orange = Bitmap at $2000 ROM (open space), ROM mapped in for CPU/attributes in $8000-$FFFF
+; Yellow = Bitmap at $2000 ROM (open space), RAM mapped in for CPU/attributes in $8000-$FFFF
+;
+; Pink = Bitmap at $A000 RAM, ROM mapped in for CPU/attributes in $8000-$FFFF
+; Cyan = Bitmap at $A000 RAM, RAM mapped in for CPU/attributes in $8000-$FFFF
+; Green = Bitmap at $A000 ROM, ROM mapped in for CPU/attributes in $8000-$FFFF
+; Purple = Bitmap at $A000 ROM, RAM mapped in for CPU/attributes in $8000-$FFFF
+
+ !to "ted-open.prg", cbm
+
+ * = $1001
+
+ !byte $0C, $10, $E4, $07, $9E, $20, $34, $31, $31, $32, $00 ; 10 SYS 4112
+ !byte $00, $00
+
+ *= $1010
+
+ SEI
+ JSR fill
+ LDA #$40
+ STA $FF19 ;Border
+
+ LDA #$08
+ STA $FF14 ; Attributes at $0800
+ LDA #$08
+ STA $FF12 ; Bitmap at $2000 in RAM
+
+ LDA #$3B
+ STA $FF06 ; Hires Bitmap mode
+
+- LDX #$7F
+ JSR press
+ CMP #$7F ; RUNSTOP
+ BNE +
+
+ LDA $FF12
+ EOR #$04
+ STA $FF12
+
+ LDA $FF19 ; Toggle bitmap from RAM/ROM
+ EOR #$08
+ STA $FF19
+
+ LDX #$7F
+ JSR release
+ BEQ -
++ CMP #$DF ; C= key
+ BNE +
+ LDA $FF14 ; Toggle bitmap between $2000 & $A000
+ EOR #$88
+ STA $FF14
+ LDA $FF12
+ EOR #$20
+ STA $FF12
+
+ LDA $FF19
+ EOR #$02
+ STA $FF19
+
+ LDX #$7F
+ JSR release
+ BEQ -
++ CMP #$FB ; CTRL
+ BNE -
+.c STA $FF3F ; Toggle ROM
+ LDA .c+1
+ EOR #$01
+ STA .c+1
+
+ LDA $FF19
+ EOR #$01
+ STA $FF19
+
+ LDX #$7F
+ JSR release
+ BEQ -
+
+
+press
+- STX $FD30
+ STX $FF08
+ LDA $FF08
+ CMP #$FF
+ BEQ -
+ RTS
+
+release
+- STX $FD30
+ STX $FF08
+ LDA $FF08
+ CMP #$FF
+ BNE -
+ RTS
+
+
+irq:
+ LDA #$02
+ STA $FF09 ; Clear IRQs
+ LDA #%10100010 ; Enable raster interrupt signals from TED, and clear MSB in TED's raster register
+ STA $FF0A
+
+ LDA $FB
+ PHA
+ LDA #$00
+ STA $FB
+ PHP
+ CLI
+ JSR $DB11 ; Scan keyboard
+ PLP
+ PLA
+ STA $FB
+ JMP $FCBE
+
+
+fill:
+; Fill attributes at $0800 and $8000
+ LDY #$FF
+ LDX #$00
+- LDA #$01
+ STA $0C00,X
+ STA $0D00,X
+ STA $0E00,X
+ STA $0F00,X
+
+ STA $8000,X
+ STA $8100,X
+ STA $8200,X
+ STA $8300,X
+
+ TYA
+ STA $0800,X
+ STA $0900,X
+ STA $0A00,X
+ STA $0B00,X
+
+ STA $8400,X
+ STA $8500,X
+ STA $8600,X
+ STA $8700,X
+ INX
+ BNE -
+
+ LDY #$20
+-- LDX #$00
+- LDA #%11110000
+.a STA $2000,X
+ LDA #%11001100
+.b STA $A000,X
+ INX
+ BNE -
+ DEY
+ BEQ +
+ INC .a+2
+ INC .b+2
+ BNE --
+
++ RTS
\ No newline at end of file
Added: testprogs/Plus4/openmem/ted-open.prg
===================================================================
(Binary files differ)
Index: testprogs/Plus4/openmem/ted-open.prg
===================================================================
--- testprogs/Plus4/openmem/ted-open.prg 2024-08-09 13:30:27 UTC (rev 45285)
+++ testprogs/Plus4/openmem/ted-open.prg 2024-08-09 14:33:55 UTC (rev 45286)
Property changes on: testprogs/Plus4/openmem/ted-open.prg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/x-commodore-exec
\ No newline at end of property
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gp...@us...> - 2024-08-09 13:30:30
|
Revision: 45285
http://sourceforge.net/p/vice-emu/code/45285
Author: gpz
Date: 2024-08-09 13:30:27 +0000 (Fri, 09 Aug 2024)
Log Message:
-----------
simple test for 'Hannes' memory expansion, provided by SukkoPera
Added Paths:
-----------
testprogs/Plus4/HannesTest/
testprogs/Plus4/HannesTest/HannesTest.asm
testprogs/Plus4/HannesTest/HannesTest.prg
testprogs/Plus4/HannesTest/Makefile
Added: testprogs/Plus4/HannesTest/HannesTest.asm
===================================================================
--- testprogs/Plus4/HannesTest/HannesTest.asm (rev 0)
+++ testprogs/Plus4/HannesTest/HannesTest.asm 2024-08-09 13:30:27 UTC (rev 45285)
@@ -0,0 +1,228 @@
+MAXSLOTS = 64
+
+H_TED_BANKS = 0
+H_TED_MONOBANK = (1 << 6)
+
+H_BOUNDARY_1000 = 0
+H_BOUNDARY_4000 = (1 << 7)
+
+!addr {
+ HANNES_CTL = $fd16
+
+ BORDER = $ff19
+
+ PRIMM = $ff4f
+ CHROUT = $ffd2
+
+ TEST_PAGE_BASE = $4000
+
+ NBANKS = $0057
+ RESULT = $0058 ; Zero if failure
+ TEMP = $0059
+}
+
+COLOR_DEFAULT = %11101110 ; Default BASIC border color
+COLOR_TESTING = %01110111 ; Yellow
+COLOR_OK = %01010101 ; Nice green
+COLOR_FAIL = %00010010 ; Dark red
+
+; BASIC launcher
+* = $1001 ; 10 SYS 4109 ($100d)
+!zone launcher {
+ !word .nextline, 0 ; second word is line number
+ !byte $9e ; SYS
+ !pet "4109" ; Address (in string format)
+ !byte 0 ; End of instruction
+.nextline:
+ !byte 0, 0 ; End of BASIC program
+}
+
+* = 4109
+ jmp start
+
+start:
+ lda #COLOR_DEFAULT
+ sta BORDER
+
+ ; Preload successful test result :)
+ lda #1
+ sta RESULT
+
+ ; Detect number of 64 kB banks
+ jsr detect
+
+ ; Show how many we found
+ lda #(H_BOUNDARY_4000 | H_TED_MONOBANK) ; Back to bank 0
+ sta HANNES_CTL
+
+ jsr PRIMM
+ !pet "detected $", $00
+
+ lda TEST_PAGE_BASE
+ sta NBANKS
+ jsr $fb05
+
+ jsr PRIMM
+ !pet "memory bank(s)", $0d, $00
+
+ ; Start test
+ lda #COLOR_TESTING
+ sta BORDER
+
+ jsr fill
+ jsr check
+
+ lda NBANKS
+ cmp #1
+ beq .setborder
+
+ jsr fillrev
+ jsr check
+
+.setborder:
+ lda RESULT
+ beq .fail
+
+.ok:
+ lda #COLOR_OK
+ sta BORDER
+ jmp .end
+
+.fail:
+ lda #COLOR_FAIL
+ sta BORDER
+
+.end:
+ rts
+
+
+fill:
+!zone fill {
+ ldy #0
+- tya
+ ora #(H_BOUNDARY_4000 | H_TED_MONOBANK)
+ sta HANNES_CTL ; Set bank Y
+
+ jsr PRIMM
+ !pet "filling bank $", $00
+ tya
+ jsr $fb05
+ lda #$0d
+ jsr CHROUT
+
+ tya
+ jsr fillpage
+ iny
+ cpy NBANKS
+ bne -
+
+ rts
+
+check:
+ ldy #0
+- tya
+ ora #(H_BOUNDARY_4000 | H_TED_MONOBANK)
+ sta HANNES_CTL ; Set bank Y
+
+ jsr PRIMM
+ !pet "checking bank ", $00
+ tya
+ jsr $fb05
+
+ jsr PRIMM
+ !pet "... ", $00
+
+ jsr checkpage
+ bcc .ok
+ jsr PRIMM
+ !pet "fail", $0d, $00
+ lda #0
+ sta RESULT
+ jmp .next
+
+.ok:
+ jsr PRIMM
+ !pet "ok", $0d, $00
+
+.next:
+ iny
+ cpy NBANKS
+ bne -
+
+ rts
+}
+
+;-----
+fillrev:
+!zone fillrev {
+ ldy NBANKS
+ dey
+- tya
+ ora #(H_BOUNDARY_4000 | H_TED_MONOBANK)
+ sta HANNES_CTL ; Set bank Y
+
+ jsr PRIMM
+ !pet "filling bank $", $00
+ tya
+ jsr $fb05
+ lda #$0d
+ jsr CHROUT
+
+ tya
+ jsr fillpage
+ dey
+ cpy #$ff
+ bne -
+
+ rts
+
+detect:
+ ldx #0
+- txa
+ sta TEMP
+ ora #(H_BOUNDARY_4000 | H_TED_MONOBANK)
+ sta HANNES_CTL ; Set bank X
+
+ sec
+ lda #MAXSLOTS
+ sbc TEMP
+ sta TEST_PAGE_BASE
+
+next:
+ inx
+ cpx #MAXSLOTS
+ bne -
+ret:
+ rts
+}
+
+; Enter with fill value in A
+fillpage:
+!zone fillpage {
+ ldx #0
+- sta TEST_PAGE_BASE, x
+ inx
+ cpx #0
+ bne -
+ rts
+}
+
+; Enter with check value in Y
+checkpage:
+!zone checkpage {
+ ldx #0
+- tya
+ cmp TEST_PAGE_BASE, x
+ bne .fail
+ inx
+ cpx #0
+ bne -
+ clc
+ jmp .end
+
+.fail:
+ sec
+
+.end:
+ rts
+}
Added: testprogs/Plus4/HannesTest/HannesTest.prg
===================================================================
(Binary files differ)
Index: testprogs/Plus4/HannesTest/HannesTest.prg
===================================================================
--- testprogs/Plus4/HannesTest/HannesTest.prg 2024-08-08 23:56:18 UTC (rev 45284)
+++ testprogs/Plus4/HannesTest/HannesTest.prg 2024-08-09 13:30:27 UTC (rev 45285)
Property changes on: testprogs/Plus4/HannesTest/HannesTest.prg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/x-commodore-exec
\ No newline at end of property
Added: testprogs/Plus4/HannesTest/Makefile
===================================================================
--- testprogs/Plus4/HannesTest/Makefile (rev 0)
+++ testprogs/Plus4/HannesTest/Makefile 2024-08-09 13:30:27 UTC (rev 45285)
@@ -0,0 +1,9 @@
+OPTS = -v --color -f cbm -l $(@:prg=lst)
+
+all: HannesTest.prg
+
+HannesTest.prg: HannesTest.asm
+ acme $(OPTS) -o $@ $^
+
+clean:
+ rm -f *.prg *.lst
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gp...@us...> - 2024-08-08 23:56:22
|
Revision: 45284
http://sourceforge.net/p/vice-emu/code/45284
Author: gpz
Date: 2024-08-08 23:56:18 +0000 (Thu, 08 Aug 2024)
Log Message:
-----------
remove support for 'Hannes 4MB' expansion, which was kindof broken, and no software exists for even the 1mb variant :)
Modified Paths:
--------------
trunk/vice/doc/vice.texi
trunk/vice/src/arch/gtk3/widgets/plus4memoryexpansionwidget.c
trunk/vice/src/arch/sdl/menu_plus4hw.c
trunk/vice/src/plus4/plus4memhacks.c
trunk/vice/src/plus4/plus4memhacks.h
trunk/vice/src/plus4/plus4memhannes256k.c
trunk/vice/src/plus4/plus4memhannes256k.h
trunk/vice/src/plus4/ted-sound.c
Modified: trunk/vice/doc/vice.texi
===================================================================
--- trunk/vice/doc/vice.texi 2024-08-08 23:05:45 UTC (rev 45283)
+++ trunk/vice/doc/vice.texi 2024-08-08 23:56:18 UTC (rev 45284)
@@ -15878,7 +15878,7 @@
@vindex MemoryHack
@item MemoryHack
Integer specifying what memory expansion hack is active.
-(0: None, 1: C256K, 2: H256K, 3: H1024K, 4: H4096K)
+(0: None, 1: C256K, 2: H256K, 3: H1024K)
@vindex Acia1Enable
@item Acia1Enable
@@ -15919,7 +15919,7 @@
@item -memoryexphack <device>
Set active memory expansion hack
(@code{MemoryHack}).
-(0: None, 1: C256K, 2: H256K, 3: H1024K, 4: H4096K)
+(0: None, 1: C256K, 2: H256K, 3: H1024K)
@findex -acia, +acia
@item -acia
Modified: trunk/vice/src/arch/gtk3/widgets/plus4memoryexpansionwidget.c
===================================================================
--- trunk/vice/src/arch/gtk3/widgets/plus4memoryexpansionwidget.c 2024-08-08 23:05:45 UTC (rev 45283)
+++ trunk/vice/src/arch/gtk3/widgets/plus4memoryexpansionwidget.c 2024-08-08 23:56:18 UTC (rev 45284)
@@ -48,7 +48,6 @@
{ "256KiB (CSORY)", MEMORY_HACK_C256K },
{ "256KiB (HANNES)", MEMORY_HACK_H256K },
{ "1024KiB (HANNES)", MEMORY_HACK_H1024K },
- { "4096KiB (HANNES)", MEMORY_HACK_H4096K },
{ NULL, -1 }
};
Modified: trunk/vice/src/arch/sdl/menu_plus4hw.c
===================================================================
--- trunk/vice/src/arch/sdl/menu_plus4hw.c 2024-08-08 23:05:45 UTC (rev 45283)
+++ trunk/vice/src/arch/sdl/menu_plus4hw.c 2024-08-08 23:56:18 UTC (rev 45284)
@@ -234,10 +234,6 @@
.callback = radio_MemoryHack_callback,
.data = (ui_callback_data_t)MEMORY_HACK_H1024K
},
- { .string = "4MiB (HANNES)",
- .type = MENU_ENTRY_RESOURCE_RADIO,
- .callback = radio_MemoryHack_callback,
- .data = (ui_callback_data_t)MEMORY_HACK_H4096K},
SDL_MENU_LIST_END
};
Modified: trunk/vice/src/plus4/plus4memhacks.c
===================================================================
--- trunk/vice/src/plus4/plus4memhacks.c 2024-08-08 23:05:45 UTC (rev 45283)
+++ trunk/vice/src/plus4/plus4memhacks.c 2024-08-08 23:56:18 UTC (rev 45284)
@@ -44,7 +44,6 @@
"256KiB CSORY",
"256KiB Hannes",
"1MiB Hannes",
- "4MiB Hannes"
};
@@ -64,7 +63,6 @@
case MEMORY_HACK_C256K:
case MEMORY_HACK_H256K:
case MEMORY_HACK_H1024K:
- case MEMORY_HACK_H4096K:
break;
default:
return -1;
@@ -79,7 +77,6 @@
break;
case MEMORY_HACK_H256K:
case MEMORY_HACK_H1024K:
- case MEMORY_HACK_H4096K:
set_h256k_enabled(H256K_DISABLED);
break;
}
@@ -106,10 +103,6 @@
set_h256k_enabled(H256K_1024K);
resources_set_int("RamSize", 1024);
break;
- case MEMORY_HACK_H4096K:
- set_h256k_enabled(H256K_4096K);
- resources_set_int("RamSize", 4096);
- break;
}
return 0;
@@ -123,7 +116,6 @@
break;
case MEMORY_HACK_H256K:
case MEMORY_HACK_H1024K:
- case MEMORY_HACK_H4096K:
h256k_ram_inject(addr, value);
break;
case MEMORY_HACK_NONE:
@@ -168,7 +160,7 @@
{
{ "-memoryexphack", SET_RESOURCE, CMDLINE_ATTRIB_NEED_ARGS,
NULL, NULL, "MemoryHack", NULL,
- "<device>", "Set the 'memory expansion hack' device (0: None, 1: CSORY 256KiB, 2: HANNES 256KiB, 3: HANNES 1MiB, 4: HANNES 4MiB)" },
+ "<device>", "Set the 'memory expansion hack' device (0: None, 1: CSORY 256KiB, 2: HANNES 256KiB, 3: HANNES 1MiB)" },
CMDLINE_LIST_END
};
Modified: trunk/vice/src/plus4/plus4memhacks.h
===================================================================
--- trunk/vice/src/plus4/plus4memhacks.h 2024-08-08 23:05:45 UTC (rev 45283)
+++ trunk/vice/src/plus4/plus4memhacks.h 2024-08-08 23:56:18 UTC (rev 45284)
@@ -36,7 +36,6 @@
MEMORY_HACK_C256K, /**< 256KB CSORY */
MEMORY_HACK_H256K, /**< 256KB Hannes */
MEMORY_HACK_H1024K, /**< 1024KB Hannes */
- MEMORY_HACK_H4096K /**< 4096KB Hannes */
} plus4_memhack_t;
Modified: trunk/vice/src/plus4/plus4memhannes256k.c
===================================================================
--- trunk/vice/src/plus4/plus4memhannes256k.c 2024-08-08 23:05:45 UTC (rev 45283)
+++ trunk/vice/src/plus4/plus4memhannes256k.c 2024-08-08 23:56:18 UTC (rev 45284)
@@ -90,7 +90,6 @@
case H256K_DISABLED:
case H256K_256K:
case H256K_1024K:
- case H256K_4096K:
break;
default:
return -1;
@@ -150,10 +149,6 @@
h256k_ram = lib_realloc((void *)h256k_ram, (size_t)0xf0000);
log_message(h256k_log, "HANNES 1MiB expansion installed.");
break;
- case 3:
- h256k_ram = lib_realloc((void *)h256k_ram, (size_t)0x3f0000);
- log_message(h256k_log, "HANNES 4MiB expansion installed.");
- break;
}
h256k_reset();
return 0;
@@ -191,9 +186,6 @@
h256k_bank = h256k_bank + ((3 - ((value & 0xc) >> 2)) << 2);
h256k_reg = h256k_reg | 0x70;
}
- if (h256k_enabled == 3) {
- h256k_bank = h256k_bank + ((3 - ((value & 0x30) >> 4)) << 4);
- }
h256k_bound = (value & 0x80) >> 7;
}
Modified: trunk/vice/src/plus4/plus4memhannes256k.h
===================================================================
--- trunk/vice/src/plus4/plus4memhannes256k.h 2024-08-08 23:05:45 UTC (rev 45283)
+++ trunk/vice/src/plus4/plus4memhannes256k.h 2024-08-08 23:56:18 UTC (rev 45284)
@@ -32,7 +32,6 @@
#define H256K_DISABLED 0
#define H256K_256K 1
#define H256K_1024K 2
-#define H256K_4096K 3
extern int h256k_enabled;
Modified: trunk/vice/src/plus4/ted-sound.c
===================================================================
--- trunk/vice/src/plus4/ted-sound.c 2024-08-08 23:05:45 UTC (rev 45283)
+++ trunk/vice/src/plus4/ted-sound.c 2024-08-08 23:56:18 UTC (rev 45284)
@@ -336,7 +336,6 @@
static int ted_sound_machine_calculate_samples(sound_t **psid, int16_t *pbuf, int nr, int soc, int scc, CLOCK *delta_t)
{
int i;
- int j;
int16_t volume;
if (snd.digital) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gp...@us...> - 2024-08-08 23:06:12
|
Revision: 45283
http://sourceforge.net/p/vice-emu/code/45283
Author: gpz
Date: 2024-08-08 23:05:45 +0000 (Thu, 08 Aug 2024)
Log Message:
-----------
new TED sound logic, heavily inspired by SDL-YAPE :) should fix #886 and #887
Modified Paths:
--------------
trunk/vice/src/plus4/ted-sound.c
Modified: trunk/vice/src/plus4/ted-sound.c
===================================================================
--- trunk/vice/src/plus4/ted-sound.c 2024-08-08 10:58:34 UTC (rev 45282)
+++ trunk/vice/src/plus4/ted-sound.c 2024-08-08 23:05:45 UTC (rev 45283)
@@ -44,6 +44,14 @@
#include "sound.h"
#include "ted-sound.h"
+/* #define DEBUG_TEDSOUND */
+
+#ifdef DEBUG_TEDSOUND
+#define DBG(x) log_printf x
+#else
+#define DBG(x)
+#endif
+
/* ------------------------------------------------------------------------- */
/* Some prototypes are needed */
@@ -59,7 +67,7 @@
static int ted_sound_machine_cycle_based(void)
{
- return 0;
+ return 0; /* we are NOT cycle based */
}
static int ted_sound_machine_channels(void)
@@ -168,6 +176,12 @@
int16_t voice1_sign;
uint8_t voice1_output_enabled;
+ uint8_t voice0_cached_output;
+ uint8_t voice1_cached_output;
+ uint8_t digital_cached_output;
+
+ uint32_t oscStep;
+
/* Volume multiplier */
int16_t volume;
/* 8 cycles units per sample */
@@ -185,14 +199,52 @@
static struct plus4_sound_s snd;
-/* FIXME: Find proper volume multiplier. */
-static const int16_t volume_tab[16] = {
- 0x0000, 0x0800, 0x1000, 0x1800, 0x2000, 0x2800, 0x3000, 0x3800,
- 0x3fff, 0x3fff, 0x3fff, 0x3fff, 0x3fff, 0x3fff, 0x3fff, 0x3fff
+#define CTRL_VOICE0_ENABLE 0x10
+#define CTRL_VOICE1_ENABLE 0x20
+#define CTRL_NOISE_ENABLE 0x40
+#define CTRL_DIGITAL_ENABLE 0x80
+
+#define PRECISION 12
+#define OSCRELOADVAL (0x400 << PRECISION)
+
+/* table derived from sdl-yape:
+ bit 9: voice1 output=1
+ bit 8: voice0 output=1
+ bit 7-0 volume (8-f are all the same)
+*/
+static const int16_t volumeTable[4 * 16] = {
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x024a, 0x064a, 0x0a4a, 0x0e4a, 0x124a, 0x164a, 0x1a4a,
+ 0x1e4a, 0x1e4a, 0x1e4a, 0x1e4a, 0x1e4a, 0x1e4a, 0x1e4a, 0x1e4a,
+ 0x0000, 0x024a, 0x064a, 0x0a4a, 0x0e4a, 0x124a, 0x164a, 0x1a4a,
+ 0x1e4a, 0x1e4a, 0x1e4a, 0x1e4a, 0x1e4a, 0x1e4a, 0x1e4a, 0x1e4a,
+ 0x0000, 0x0494, 0x0cd4, 0x1596, 0x1f30, 0x29a2, 0x34ec, 0x410e,
+ 0x4e08, 0x4e08, 0x4e08, 0x4e08, 0x4e08, 0x4e08, 0x4e08, 0x4e08
};
+static inline void clock_shift_register(void)
+{
+ snd.noise_shift_register = (snd.noise_shift_register << 1) |
+ (((snd.noise_shift_register >> 7) ^
+ (snd.noise_shift_register >> 5) ^
+ (snd.noise_shift_register >> 4) ^
+ (snd.noise_shift_register >> 1)) & 1);
+}
+
+static inline void reset_shift_register(void)
+{
+ snd.noise_shift_register = 0xff;
+}
+
+/* the general logic was heavily inspired by SDL-YAPE:
+
+ https://github.com/calmopyrin/yapesdl/blob/master/tedsound.cpp
+ */
+
#ifdef SOUND_SYSTEM_FLOAT
-/* FIXME */
+/* FIXME! only the non-float code below has the new fixed TED sound stuff */
+#warning "only the non-float code has the fixed TED sound stuff"
static int ted_sound_machine_calculate_samples(sound_t **psid, float *pbuf, int nr, int scc, CLOCK *delta_t)
{
int i;
@@ -218,14 +270,14 @@
uint32_t ticks = snd.sample_position_integer >> 3;
if (snd.voice0_accu <= ticks) {
uint32_t delay = ticks - snd.voice0_accu;
- snd.voice0_sign ^= 1;
- snd.voice0_accu = 1023 - snd.voice0_reload;
+ snd.voice0_sign ^= CTRL_VOICE0_ENABLE;
+ snd.voice0_accu = OSCRELOADVAL - snd.voice0_reload;
if (snd.voice0_accu == 0) {
- snd.voice0_accu = 1024;
+ snd.voice0_accu = OSCRELOADVAL;
}
if (delay >= snd.voice0_accu) {
snd.voice0_sign = ((delay / snd.voice0_accu)
- & 1) ? snd.voice0_sign ^ 1
+ & 1) ? snd.voice0_sign ^ CTRL_VOICE0_ENABLE
: snd.voice0_sign;
snd.voice0_accu = snd.voice0_accu - (delay % snd.voice0_accu);
} else {
@@ -237,29 +289,18 @@
if (snd.voice1_accu <= ticks) {
uint32_t delay = ticks - snd.voice1_accu;
- snd.voice1_sign ^= 1;
- snd.noise_shift_register
- = (snd.noise_shift_register << 1) +
- ( 1 ^ ((snd.noise_shift_register >> 7) & 1) ^
- ((snd.noise_shift_register >> 5) & 1) ^
- ((snd.noise_shift_register >> 4) & 1) ^
- ((snd.noise_shift_register >> 1) & 1));
- snd.voice1_accu = 1023 - snd.voice1_reload;
+ snd.voice1_sign ^= CTRL_VOICE1_ENABLE;
+ clock_shift_register();
+ snd.voice1_accu = OSCRELOADVAL - snd.voice1_reload;
if (snd.voice1_accu == 0) {
- snd.voice1_accu = 1024;
+ snd.voice1_accu = OSCRELOADVAL;
}
if (delay >= snd.voice1_accu) {
snd.voice1_sign = ((delay / snd.voice1_accu)
- & 1) ? snd.voice1_sign ^ 1
+ & 1) ? snd.voice1_sign ^ CTRL_VOICE1_ENABLE
: snd.voice1_sign;
- for (j = 0; j < (int)(delay / snd.voice1_accu);
- j++) {
- snd.noise_shift_register
- = (snd.noise_shift_register << 1) +
- ( 1 ^ ((snd.noise_shift_register >> 7) & 1) ^
- ((snd.noise_shift_register >> 5) & 1) ^
- ((snd.noise_shift_register >> 4) & 1) ^
- ((snd.noise_shift_register >> 1) & 1));
+ for (j = 0; j < (int)(delay / snd.voice1_accu); j++) {
+ clock_shift_register();
}
snd.voice1_accu = snd.voice1_accu - (delay % snd.voice1_accu);
} else {
@@ -300,9 +341,9 @@
if (snd.digital) {
for (i = 0; i < nr; i++) {
- pbuf[i * soc] = sound_audio_mix(pbuf[i * soc], (snd.volume * (snd.voice0_output_enabled + snd.voice1_output_enabled)));
+ pbuf[i * soc] = sound_audio_mix(pbuf[i * soc], snd.digital_cached_output);
if (soc == SOUND_OUTPUT_STEREO) {
- pbuf[(i * soc) + 1] = sound_audio_mix(pbuf[(i * soc) + 1], (snd.volume * (snd.voice0_output_enabled + snd.voice1_output_enabled)));
+ pbuf[(i * soc) + 1] = sound_audio_mix(pbuf[(i * soc) + 1], snd.digital_cached_output);
}
}
} else {
@@ -315,74 +356,33 @@
snd.sample_position_integer += snd.sample_length_integer;
if (snd.sample_position_integer >= 8) {
/* Advance state engine */
- uint32_t ticks = snd.sample_position_integer >> 3;
- if (snd.voice0_accu <= ticks) {
- uint32_t delay = ticks - snd.voice0_accu;
- snd.voice0_sign ^= 1;
- snd.voice0_accu = 1023 - snd.voice0_reload;
- if (snd.voice0_accu == 0) {
- snd.voice0_accu = 1024;
+ if ((snd.voice0_reload & (0x3ff << PRECISION)) != (0x3ff << PRECISION)) {
+ if((snd.voice0_accu += snd.oscStep) >= OSCRELOADVAL) {
+ snd.voice0_sign ^= CTRL_VOICE0_ENABLE;
+ snd.voice0_cached_output = snd.volume | (snd.voice0_sign & snd.voice0_output_enabled);
+ snd.voice0_accu = snd.voice0_reload + (snd.voice0_accu - OSCRELOADVAL);
}
- if (delay >= snd.voice0_accu) {
- snd.voice0_sign = ((delay / snd.voice0_accu)
- & 1) ? snd.voice0_sign ^ 1
- : snd.voice0_sign;
- snd.voice0_accu = snd.voice0_accu - (delay % snd.voice0_accu);
- } else {
- snd.voice0_accu -= delay;
- }
- } else {
- snd.voice0_accu -= ticks;
}
- if (snd.voice1_accu <= ticks) {
- uint32_t delay = ticks - snd.voice1_accu;
- snd.voice1_sign ^= 1;
- snd.noise_shift_register
- = (snd.noise_shift_register << 1) +
- ( 1 ^ ((snd.noise_shift_register >> 7) & 1) ^
- ((snd.noise_shift_register >> 5) & 1) ^
- ((snd.noise_shift_register >> 4) & 1) ^
- ((snd.noise_shift_register >> 1) & 1));
- snd.voice1_accu = 1023 - snd.voice1_reload;
- if (snd.voice1_accu == 0) {
- snd.voice1_accu = 1024;
+ if ((snd.voice1_reload & (0x3ff << PRECISION)) != (0x3ff << PRECISION)) {
+ if((snd.voice1_accu += snd.oscStep) >= OSCRELOADVAL) {
+ snd.voice1_sign ^= CTRL_VOICE1_ENABLE;
+ snd.voice1_cached_output = snd.volume |
+ (snd.voice1_sign & snd.voice1_output_enabled) |
+ (((snd.noise_shift_register & 1) ? CTRL_NOISE_ENABLE : 0) & snd.noise) >> 1;
+ clock_shift_register();
+ snd.voice1_accu = snd.voice1_reload + (snd.voice1_accu - OSCRELOADVAL);
}
- if (delay >= snd.voice1_accu) {
- snd.voice1_sign = ((delay / snd.voice1_accu)
- & 1) ? snd.voice1_sign ^ 1
- : snd.voice1_sign;
- for (j = 0; j < (int)(delay / snd.voice1_accu);
- j++) {
- snd.noise_shift_register
- = (snd.noise_shift_register << 1) +
- ( 1 ^ ((snd.noise_shift_register >> 7) & 1) ^
- ((snd.noise_shift_register >> 5) & 1) ^
- ((snd.noise_shift_register >> 4) & 1) ^
- ((snd.noise_shift_register >> 1) & 1));
- }
- snd.voice1_accu = snd.voice1_accu - (delay % snd.voice1_accu);
- } else {
- snd.voice1_accu -= delay;
- }
- } else {
- snd.voice1_accu -= ticks;
}
}
snd.sample_position_integer = snd.sample_position_integer & 7;
+#if 0
+printf("%02x: %02x %02x %02x %02x\n", snd.volume,
+ snd.voice0_output_enabled, snd.voice0_sign,
+ snd.voice1_output_enabled, snd.voice1_sign);
+#endif
+ volume = volumeTable[snd.voice0_cached_output | snd.voice1_cached_output];
- volume = 0;
-
- if (snd.voice0_output_enabled && snd.voice0_sign) {
- volume += snd.volume;
- }
- if (snd.voice1_output_enabled && !snd.noise && snd.voice1_sign) {
- volume += snd.volume;
- }
- if (snd.voice1_output_enabled && snd.noise && (!(snd.noise_shift_register & 1))) {
- volume += snd.volume;
- }
-
pbuf[i * soc] = sound_audio_mix(pbuf[i * soc], volume);
if (soc == SOUND_OUTPUT_STEREO) {
pbuf[(i * soc) + 1] = sound_audio_mix(pbuf[(i * soc) + 1], volume);
@@ -397,6 +397,7 @@
{
uint8_t val;
+ DBG(("ted_sound_machine_init speed: %d cycles_per_sec: %d\n", speed, cycles_per_sec));
snd.speed = speed;
snd.sample_length_integer = cycles_per_sec / speed;
snd.sample_length_remainder = cycles_per_sec % speed;
@@ -403,60 +404,105 @@
snd.sample_position_integer = 0;
snd.sample_position_remainder = 0;
- snd.voice0_reload = (plus4_sound_data[0] | (plus4_sound_data[4] << 8));
- snd.voice1_reload = (plus4_sound_data[1] | (plus4_sound_data[2] << 8));
- val = plus4_sound_data[3];
- snd.volume = volume_tab[val & 0x0f];
- snd.voice0_output_enabled = (val & 0x10) ? 1 : 0;
- snd.voice1_output_enabled = (val & 0x60) ? 1 : 0;
- snd.noise = ((val & 0x60) == 0x40) ? 1 : 0;
- snd.digital = val & 0x80;
- if (snd.digital) {
- snd.voice0_sign = 1;
- snd.voice0_accu = 0;
- snd.voice1_sign = 1;
- snd.voice1_accu = 0;
- snd.noise_shift_register = 0;
- }
+ snd.oscStep = (int)(((cycles_per_sec / 8) * (double)(1 << PRECISION)) / (double)(speed) + 0.5);;
+ snd.voice0_reload = ((plus4_sound_data[0] | (plus4_sound_data[4] << 8)) + 1) & 0x3ff;
+ snd.voice1_reload = ((plus4_sound_data[1] | (plus4_sound_data[2] << 8)) + 1) & 0x3ff;
+
+ val = plus4_sound_data[3]; /* control register */
+ snd.volume = val & 0x0f;
+ snd.voice0_output_enabled = val & CTRL_VOICE0_ENABLE;
+ snd.voice1_output_enabled = val & CTRL_VOICE1_ENABLE;
+ snd.noise = ((val & 0x60) == CTRL_NOISE_ENABLE) ? CTRL_NOISE_ENABLE : 0;
+ snd.digital = val & CTRL_DIGITAL_ENABLE;
+
+ snd.voice0_sign = 0;
+ snd.voice0_accu = 0;
+ snd.voice1_sign = 0;
+ snd.voice1_accu = 0;
+ reset_shift_register();
+
+ snd.voice0_cached_output = 0;
+ snd.voice1_cached_output = 0;
+ snd.digital_cached_output = 0;
+
return 1;
}
static void ted_sound_machine_store(sound_t *psid, uint16_t addr, uint8_t val)
{
+ unsigned int freq;
switch (addr) {
- case 0x0e:
+ case 0x0e: /* voice0 freq lo */
plus4_sound_data[0] = val;
- snd.voice0_reload = (plus4_sound_data[0] | (plus4_sound_data[4] << 8));
+ freq = plus4_sound_data[0] | (plus4_sound_data[4] << 8);
+ if (freq == 0x3fe) {
+ snd.voice0_sign = CTRL_VOICE0_ENABLE;
+ snd.voice0_cached_output = snd.volume | snd.voice0_output_enabled;
+ }
+ snd.voice0_reload = ((freq + 1) & 0x3ff) << PRECISION;
break;
- case 0x0f:
+ case 0x0f: /* voice1 freq lo */
plus4_sound_data[1] = val;
- snd.voice1_reload = (plus4_sound_data[1] | (plus4_sound_data[2] << 8));
+ freq = plus4_sound_data[1] | (plus4_sound_data[2] << 8);
+ if (freq == 0x3fe) {
+ snd.voice1_sign = CTRL_VOICE1_ENABLE;
+ snd.voice1_cached_output = snd.volume | snd.voice1_output_enabled | (snd.noise >> 1);
+ }
+ snd.voice1_reload = ((freq + 1) & 0x3ff) << PRECISION;
break;
- case 0x10:
+ case 0x10: /* voice1 freq hi */
plus4_sound_data[2] = val & 3;
- snd.voice1_reload = (plus4_sound_data[1] | (plus4_sound_data[2] << 8));
+ freq = plus4_sound_data[1] | (plus4_sound_data[2] << 8);
+ if (freq == 0x3fe) {
+ snd.voice1_sign = CTRL_VOICE1_ENABLE;
+ snd.voice1_cached_output = snd.volume | snd.voice1_output_enabled | (snd.noise >> 1);
+ }
+ snd.voice1_reload = ((freq + 1) & 0x3ff) << PRECISION;
break;
case 0x11:
- snd.volume = volume_tab[val & 0x0f];
- snd.voice0_output_enabled = (val & 0x10) ? 1 : 0;
- snd.voice1_output_enabled = (val & 0x60) ? 1 : 0;
- snd.noise = ((val & 0x60) == 0x40) ? 1 : 0;
- snd.digital = val & 0x80;
+ /* bit 0-3 volume
+ 4 voice 0 enable
+ 5 voice 1 enable
+ 6 noise enable
+ 7 digital mode enabled
+ */
+ snd.volume = val & 0x0f;
+ snd.voice0_output_enabled = (val & CTRL_VOICE0_ENABLE);
+ snd.voice1_output_enabled = (val & CTRL_VOICE1_ENABLE);
+ snd.noise = ((val & 0x60) == CTRL_NOISE_ENABLE) ? CTRL_NOISE_ENABLE : 0;
+ snd.digital = val & CTRL_DIGITAL_ENABLE;
if (snd.digital) {
- snd.voice0_sign = 1;
- snd.voice0_accu = 0;
- snd.voice1_sign = 1;
- snd.voice1_accu = 0;
- snd.noise_shift_register = 0;
+ snd.voice0_sign = CTRL_VOICE0_ENABLE;
+ snd.voice0_accu = snd.voice0_reload;
+ snd.voice1_sign = CTRL_VOICE1_ENABLE;
+ snd.voice1_accu = snd.voice1_reload;
+ reset_shift_register();
+ snd.digital_cached_output = volumeTable[val & 0x3f];
}
+ snd.voice0_cached_output = snd.volume |
+ (snd.voice0_sign & snd.voice0_output_enabled);
+ snd.voice1_cached_output = snd.volume |
+ (snd.voice1_sign & snd.voice1_output_enabled) |
+ ((((snd.noise_shift_register & 1) ? CTRL_NOISE_ENABLE : 0) & snd.noise) >> 1);
plus4_sound_data[3] = val;
break;
- case 0x12:
+ case 0x12: /* voice0 freq hi */
plus4_sound_data[4] = val & 3;
- snd.voice0_reload = (plus4_sound_data[0] | (plus4_sound_data[4] << 8));
+ freq = plus4_sound_data[0] | (plus4_sound_data[4] << 8);
+ if (freq == 0x3fe) {
+ snd.voice0_sign = CTRL_VOICE0_ENABLE;
+ snd.voice0_cached_output = snd.volume | snd.voice0_output_enabled;
+ }
+ snd.voice0_reload = ((freq + 1) & 0x3ff) << PRECISION;
break;
}
+#if 0
+ DBG(("freq0:%04x freq1:%04x ctrl:%02x\n",
+ plus4_sound_data[0] | (plus4_sound_data[4] << 8),
+ plus4_sound_data[1] | (plus4_sound_data[2] << 8),
+ plus4_sound_data[3]));
+#endif
}
static uint8_t ted_sound_machine_read(sound_t *psid, uint16_t addr)
@@ -481,7 +527,17 @@
{
uint16_t i;
- snd.noise_shift_register = 0;
+ snd.voice0_sign = 0;
+ snd.voice1_sign = 0;
+ snd.voice0_accu = 0;
+ snd.voice1_accu = 0;
+ reset_shift_register();
+ snd.digital = 0;
+ snd.voice0_cached_output = 0;
+ snd.voice1_cached_output = 0;
+ snd.digital_cached_output = 0;
+
+ /* FIXME: this is is almost certainly not correct */
for (i = 0x0e; i <= 0x12; i++) {
ted_sound_store(i, 0);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gp...@us...> - 2024-08-08 10:58:37
|
Revision: 45282
http://sourceforge.net/p/vice-emu/code/45282
Author: gpz
Date: 2024-08-08 10:58:34 +0000 (Thu, 08 Aug 2024)
Log Message:
-----------
fix userport printer hitkey, disable some messages
Modified Paths:
--------------
trunk/vice/src/arch/gtk3/ui.c
trunk/vice/src/arch/shared/uiactions.c
trunk/vice/src/printerdrv/printer-userport.c
trunk/vice/src/userport/userport.c
Modified: trunk/vice/src/arch/gtk3/ui.c
===================================================================
--- trunk/vice/src/arch/gtk3/ui.c 2024-08-07 19:22:50 UTC (rev 45281)
+++ trunk/vice/src/arch/gtk3/ui.c 2024-08-08 10:58:34 UTC (rev 45282)
@@ -265,7 +265,8 @@
/* { "MonitorFont", "Mono 11", RES_EVENT_NO, NULL, */
{ "MonitorFont", "C64 Pro Mono Regular 9", RES_EVENT_NO, NULL,
&ui_resources.monitor_font, set_monitor_font, NULL },
- { "MonitorFG", "#ffffff", RES_EVENT_NO, NULL,
+ /* we want this one to be "terminal white" but NOT "bright white" */
+ { "MonitorFG", "#cccccc", RES_EVENT_NO, NULL,
&ui_resources.monitor_fg, set_monitor_fg, NULL },
{ "MonitorBG", "#000000", RES_EVENT_NO, NULL,
&ui_resources.monitor_bg, set_monitor_bg, NULL },
Modified: trunk/vice/src/arch/shared/uiactions.c
===================================================================
--- trunk/vice/src/arch/shared/uiactions.c 2024-08-07 19:22:50 UTC (rev 45281)
+++ trunk/vice/src/arch/shared/uiactions.c 2024-08-08 10:58:34 UTC (rev 45282)
@@ -399,7 +399,7 @@
{ ACTION_PRINTER_FORMFEED_4, "printer-formfeed-4", "Send form feed to printer #4", VICE_MACHINE_ALL^VICE_MACHINE_VSID },
{ ACTION_PRINTER_FORMFEED_5, "printer-formfeed-5", "Send form feed to printer #5", VICE_MACHINE_ALL^VICE_MACHINE_VSID },
{ ACTION_PRINTER_FORMFEED_6, "printer-formfeed-6", "Send form feed to plotter #6", VICE_MACHINE_ALL^VICE_MACHINE_VSID },
- { ACTION_PRINTER_FORMFEED_USERPORT, "printer-formfeed-userport", "Send form feed to userport printer", VICE_MACHINE_C64|VICE_MACHINE_C64SC|VICE_MACHINE_SCPU64|VICE_MACHINE_C128|VICE_MACHINE_VIC20|VICE_MACHINE_PET|VICE_MACHINE_CBM6x0 },
+ { ACTION_PRINTER_FORMFEED_USERPORT, "printer-formfeed-userport", "Send form feed to userport printer", VICE_MACHINE_C64|VICE_MACHINE_C64SC|VICE_MACHINE_SCPU64|VICE_MACHINE_C128|VICE_MACHINE_VIC20|VICE_MACHINE_PET|VICE_MACHINE_CBM6x0|VICE_MACHINE_PLUS4 },
{ ACTION_VIRTUAL_KEYBOARD, "virtual-keyboard", "Activate virtual keyboard", VICE_MACHINE_ALL^VICE_MACHINE_VSID },
Modified: trunk/vice/src/printerdrv/printer-userport.c
===================================================================
--- trunk/vice/src/printerdrv/printer-userport.c 2024-08-07 19:22:50 UTC (rev 45281)
+++ trunk/vice/src/printerdrv/printer-userport.c 2024-08-08 10:58:34 UTC (rev 45282)
@@ -31,7 +31,7 @@
#include "types.h"
#include "log.h"
-#define DEBUG_PRINTER
+/* #define DEBUG_PRINTER */
#ifdef DEBUG_PRINTER
#define DBG(x) log_printf x
Modified: trunk/vice/src/userport/userport.c
===================================================================
--- trunk/vice/src/userport/userport.c 2024-08-07 19:22:50 UTC (rev 45281)
+++ trunk/vice/src/userport/userport.c 2024-08-08 10:58:34 UTC (rev 45282)
@@ -112,7 +112,7 @@
PB0
*/
-#define DEBUG_UP
+/* #define DEBUG_UP */
#include "vice.h"
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <gp...@us...> - 2024-08-07 19:22:57
|
Revision: 45281
http://sourceforge.net/p/vice-emu/code/45281
Author: gpz
Date: 2024-08-07 19:22:50 +0000 (Wed, 07 Aug 2024)
Log Message:
-----------
also register the commandline options for the user port devices, oops :)
Modified Paths:
--------------
trunk/vice/src/userport/userport.c
Modified: trunk/vice/src/userport/userport.c
===================================================================
--- trunk/vice/src/userport/userport.c 2024-08-07 19:14:32 UTC (rev 45280)
+++ trunk/vice/src/userport/userport.c 2024-08-07 19:22:50 UTC (rev 45281)
@@ -963,6 +963,26 @@
return set_userport_device(temp, NULL);
}
+
+/* ------------------------------------------------------------------------- */
+
+static int userport_devices_cmdline_options_init(void)
+{
+ int i = 0;
+
+ while (userport_devices_init[i].device_id != USERPORT_DEVICE_NONE) {
+ if (userport_devices_init[i].emu_mask & machine_class) {
+ if (userport_devices_init[i].userport_device_cmdline_options_init) {
+ if (userport_devices_init[i].userport_device_cmdline_options_init() < 0) {
+ return -1;
+ }
+ }
+ }
+ i++;
+ }
+ return 0;
+}
+
static char *build_userport_string(int something)
{
int i = 0;
@@ -1000,7 +1020,11 @@
cf.f = build_userport_string;
cmdline_options[0].description = cf.c;
- return cmdline_register_options(cmdline_options);
+ if (cmdline_register_options(cmdline_options) < 0) {
+ return -1;
+ }
+
+ return userport_devices_cmdline_options_init();
}
void userport_enable(int val)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|