Commit Graph
912 Commits
Author SHA1 Message Date
chris f1df180bf8 TKSA: send the secondary address the caller gives
TKSA ORed the accumulator with $90 before sending it. Its callers pass
the secondary address plus $60, as the routine's own comment asks, so
TKSA turned a TALK secondary address $60-$6F into $F0-$FF, the OPEN
command, on the bus.

The contract (C64 Programmer's Reference Guide, TKSA; Michael Steil,
"Commodore Peripheral Bus: Part 2", https://www.pagetable.com/?p=1031,
which gives TKSA's argument as A = $60 + secondary address): TKSA sends
the byte in A as the secondary address to the device told to TALK.
TKSA now sends A as it is.

Upstream: https://github.com/MEGA65/open-roms/issues/116 (bug 1)
2026-10-15 02:18:55 +02:00
chris 340bbefd06 CHKIN, CHKOUT: address the channel by the file's secondary address
chkin_iec and ckout_iec read the secondary address from LAT, the table
of logical file numbers, instead of SAT, the table of secondary
addresses. A file whose number differed from its secondary address,
such as OPEN 3,8,2, was read from or written to the wrong channel, and
the read-only and write-only checks tested the file number.

The contract (Michael Steil, "Commodore Peripheral Bus: Part 2",
https://www.pagetable.com/?p=1031): CHKIN sends TALK and CHKOUT sends
LISTEN, each followed by the secondary address OPEN was given; Compute!'s
Mapping the Commodore 64 (p. 52) keeps the logical file numbers at
$0259 (LAT) and the secondary addresses at $026D (SAT). Both routines
now read SAT.

Not reported upstream (https://github.com/MEGA65/open-roms); it may be
what upstream issue #117's OPEN 1,8,0,"$" test met:
https://github.com/MEGA65/open-roms/issues/117
2026-10-15 02:17:03 +02:00
chris 29124377fc CLOSE: send LISTEN, CLOSE, UNLISTEN to a serial device
close_iec sent its CLOSE command under ATN without first addressing the
device with LISTEN and without UNLISTEN after it, and built the command
with ORA $E0 (zero page) instead of ORA #$E0, so the byte it sent was
the secondary address ORed with whatever $E0 held. The drive never
learned of the CLOSE, so a file written on a channel was never written
to the disk.

The contract (Michael Steil, "Commodore Peripheral Bus: Part 2",
https://www.pagetable.com/?p=1031): CLOSE of a file on a serial device
sends LISTEN, then $E0 plus the secondary address, then UNLISTEN.
close_iec now does that, as iec_close_load already does for LOAD.

Not reported upstream (https://github.com/MEGA65/open-roms).
2026-10-15 02:15:38 +02:00
chris 264e9792a5 CIOUT: buffer the byte where iec_tx_byte sends it from
CIOUT kept the byte to send next in BSOUR ($95), but iec_tx_byte, which
CIOUT and iec_tx_flush (called by UNLSN, UNTLK, LISTEN, TALK) use to
send it, transmits TBTCNT ($A4). So every byte CHROUT sent to a serial
device was whatever TBTCNT held, and a file written with CHKOUT and
CHROUT held the wrong bytes.

The contract (C64 Programmer's Reference Guide, CIOUT): CIOUT sends a
byte to the listening device, always holding one back so that the last
byte goes with EOI when UNLSN ends the transfer. CIOUT now buffers the
byte in TBTCNT, the one-line fix of upstream PR #113; changing the send
path to read BSOUR would also move LOAD's and SAVE's bytes.

Upstream: https://github.com/MEGA65/open-roms/pull/113
2026-10-15 02:15:38 +02:00
chris 840c5f1b61 Add the mc64 configuration, the Firmware of arnitech's mc64
A copy of the c64 configuration with its own ID ($6D), the brand "MC64",
and BCD_SAFE_INTERRUPTS off, plus its Makefile targets
build/kernal_mc64.rom and build/basic_mc64.rom, made the same way as the
c64 ones. NOTICE says who modified the fork, when, and what changed.
2026-10-14 18:32:24 +02:00
Rikard Nordgren ad178dbe4d Add build for the original C64 2026-05-16 22:31:48 +02:00
Rikard Nordgren 781ad9ee6c Add pwr_FAC2_FAC1 2026-05-09 17:01:44 +02:00
Rikard Nordgren ec3c7c05dc Add exp_FAC1
Had to deactivate it for MEGA65 because of conflicting code also placed at e000
2026-05-09 17:01:44 +02:00
Rikard Nordgren 6ea0dc74be Remove unused math helpers 2026-05-09 17:01:44 +02:00
Rikard Nordgren 1ec43e8cd7 Update FIN 2026-05-09 17:01:44 +02:00
Rikard Nordgren 1b1d0c4329 Remove no longer used mov_FAC1_MEM 2026-05-09 17:01:44 +02:00
Rikard Nordgren 1adfa10462 Update -32768 2026-05-09 17:01:44 +02:00
Rikard Nordgren d65db6a049 Update const_PI
Allow a patched best rounded value or the original value from the MS BASIC
2026-05-09 17:01:44 +02:00
Rikard Nordgren d20725cc81 Add configuration to select the original unpatched BASIC
The idea is to use this setting to as far as possible replicate the original BASIC and to turn it off to be able to apply bugfixes or optimizations.
2026-05-09 17:01:44 +02:00
FeralChild64 e9729fe0b0 Enable transcendental functions also for MEGA65 build 2026-04-29 21:26:56 +02:00
Rikard Nordgren c494102aed Update const_LOG_2 2026-04-29 21:18:16 +02:00
Rikard Nordgren 325b41da8e Update const_NEG_HALF 2026-04-29 21:18:16 +02:00
Rikard Nordgren 70bf9c6a81 Update const_SQR_2 2026-04-29 21:18:16 +02:00
Rikard Nordgren 811df7a18d Update const_INV_SQR_2 2026-04-29 21:18:16 +02:00
Rikard Nordgren d50bba16c9 Update log_FAC1 2026-04-29 21:18:16 +02:00
Rikard Nordgren 84eded300c Update pwr_FAC2_MEM 2026-04-29 21:18:16 +02:00
Rikard Nordgren 24f1bc9193 Add sqr_FAC2 2026-04-29 21:18:16 +02:00
Rikard Nordgren 661f93a03d Update sqr_FAC1 2026-04-29 21:18:16 +02:00
Rikard Nordgren 5127e41643 Update poly2_FAC1 2026-04-29 21:18:16 +02:00
Rikard Nordgren 33355766b4 Update poly1_FAC1 2026-04-29 21:18:16 +02:00
Rikard Nordgren e7790b7b10 Update const_QUARTER 2026-04-29 21:18:16 +02:00
Rikard Nordgren c86e20e0db Update const_DOUBLE_PI 2026-04-29 21:18:16 +02:00
Rikard Nordgren 37a26fba4c Update const_HALF_PI 2026-04-29 21:18:16 +02:00
Rikard Nordgren 85f921a172 Update tan_FAC1 2026-04-29 21:18:16 +02:00
Rikard Nordgren 1383c70ddc Update sin_FAC1 2026-04-29 21:18:16 +02:00
Rikard Nordgren cbba5e78fb Remove the duplicate const_DOUBLE_PI
This is now part of the poly_sin
2026-04-29 21:18:16 +02:00
Rikard Nordgren dfe8908c90 Update poly_sin 2026-04-29 21:18:16 +02:00
Rikard Nordgren 113b3cf7c2 Update cos_FAC1 2026-04-29 21:18:16 +02:00
Rikard Nordgren 18e51b855b Update poly_atn 2026-04-29 21:18:16 +02:00
Rikard Nordgren d3e4af6f6f Update atn_FAC1
Also update similarity to be able to test BASIC parts in KERNAL ROM area
2026-04-29 21:18:16 +02:00
Rikard Nordgren 629b1efe20 Update const_ONE 2026-04-29 21:18:16 +02:00
Rikard Nordgren ea434f9e38 Update poly_log 2026-04-29 21:18:16 +02:00
Rikard Nordgren 698f205484 Update const_ONE 2026-04-29 21:18:16 +02:00
Rikard Nordgren 0d35bf3040 Update poly_exp 2026-04-29 21:18:16 +02:00
Rikard Nordgren 9198cc1dc3 Turn on transcendental functions and turn off tape wedge in 38K config 2026-04-29 21:18:16 +02:00
Rikard Nordgren 43ea6a4cac Update const_INV_LOG_2 2026-04-29 21:18:16 +02:00
Rikard Nordgren 1e3f72fe33 Fix comments in FOUT 2026-04-12 13:13:18 +02:00
Rikard Nordgren e3dfe9e0e2 Add FOUT 2026-04-12 13:13:18 +02:00
Rikard Nordgren abd67c40f9 Add floating point constants for FOUT 2026-04-12 13:13:18 +02:00
Rikard Nordgren b10f51345a Add time conversion table 2026-04-12 13:13:18 +02:00
Rikard Nordgren fa617b3f92 Add powers of ten table 2026-04-12 13:13:18 +02:00
Rikard Nordgren 168465caba Update const_HALF 2026-04-12 13:13:18 +02:00
Rikard Nordgren 7eda12aa34 Update FINLOG 2026-04-12 13:13:18 +02:00
Rikard Nordgren eaa517f302 Update toggle_sign_FAC1 2026-04-12 13:13:18 +02:00
Rikard Nordgren 635a795b77 Update div_FAC2_FAC1 2026-04-12 13:13:18 +02:00