Paradoxon Basic

From C64-Wiki
Jump to navigationJump to search
Paradoxon Basic
Paradoxon Basic Title
Developer Robert Bartz
Company
Publisher Markt & Technik Verlag
Release 1987
Licence
Platform C64
Genre BASIC Expansion
Operation Keyboard
Media Diskette
Language(s) Language:english, Instructions Language German
Information


Paradoxon Basic is a tool for BASIC V2 of the C64. It allows BASIC programs to use 51199 bytes of RAM instead of the normal 38911 bytes. Additionally, it includes commands such as RENUMBER and OLD and functionality such as assigning macros to function keys.

Paradoxon Basic was released in the 64'er "Sonderheft 21".

Mode of operation[edit | edit source]

Paradoxon Basic disables the BASIC ROM at $A000-$BFFF and makes use of the RAM below the I/O area ($D000-$DFFF) and below the KERNAL ROM ($E000-$FFFF) to store a modified copy of the BASIC ROM as well as own code for new commands and helper routines. Additionally, some code at $02A7-$02FF is used for switching the KERNAL ROM in and out when calling it from the BASIC routines. Consequently, BASIC programs can use memory from $0801 to $CFFF (instead of $9FFF).

Details and source code of Paradoxon Basic are available on the disk of 64'er Sonderheft 21.

New commands[edit | edit source]

  • MERGE"filename" - merge another BASIC file into the current one
  • DELETE start-end - delete a range of program lines
  • OLD - restore BASIC program after NEW or reset
  • RENUMBER start,interval - renumber program lines
  • AUTO start,interval - start assisted line numbering for entering programs
  • VAR and ARRAY - show contents of plain variables and arrays
  • FIND - search term in code
  • DIMFn="..." - define function key macro (n = function key number)
  • @ - read drive status (@9 to read from drive 9)
  • @$ - show directory
  • @command - send drive command

Additionally, some existing BASIC V2 commands have been improved:

  • GOTO allows terms as operand
  • RESTORE allows a term as operand, setting the next line to READ data from
  • DIM allows resizing arrays

In direct mode, function keys can get redefined by pressing CTRL+Fn, then - while the cursor is blinking quickly - entering the keys to associate with the function key, then ending by pressing any function key (maximum 31 keys).

Compatibility[edit | edit source]

SYS commands get executed with processor port $01 set to value $34 (ROMs and I/O disabled). Calls that expect the BASIC ROM at $A000 to $BFFF fail and have to get modified to call the modified copy starting at $D000.

SYS calls to the KERNAL will not work either as the KERNAL is not visible from BASIC directly.
However, calls using the KERNAL vector table $FF81-$FFF6 will work fine as those use helper routines that handle memory configuration as needed.

SYS 64738 to trigger a reset is not supported. Instead, the key combination C= + CTRL + RESTORE can be used.

POKE/PEEK are executed with $01 set to value $35 (ROMs disabled, I/O enabled) so that writing SID or VIC registers is possible.

Bugs[edit | edit source]

  • RND(0) returns a constant value instead of random numbers.
  • Function key special handling is active when running programs, too.
  • Both bugs have been fixed in the 2022 cartridge version (see weblinks).

Weblinks[edit | edit source]