; ; ROM patches file ; ; This file describes how to patch a ROM for things like turbotape, ; and filename decoding. ; ; ****** ROM INFORMATION ****** ; This part isn't actual patches, just information about ; the hardware the ROM expects to be present. ; ROM expects a special keyboard layout? keymap = qwerty ; ****** FILENAME DECODING ******* ; When the PC is about to execute this address, we should be at a point ; in CLOAD/CSAVE/STORE/RECALL where the filename is valid in memory. fd_cload_getname_pc = $e4ac fd_csave_getname_pc = $e92c fd_store_getname_pc = $e98b fd_recall_getname_pc = $e9d8 ; The address to read the CLOAD filename fd_getname_addr = $027f ; ****** TURBOTAPE ****** ; Address of the "Cassette Sync" function in ROM tt_getsync_pc = $e735 ; Address of the RTS at the end of the cassette sync function (so we can ; skip the function) tt_getsync_end_pc = $e759 ; If turbotape is enabled, but no tape is inserted, the cassette sync ; function will be executed normally. Here we have an address inside the ; loop that waits for the cassette sync signal, so that we can break out ; of it if a tape is inserted. tt_getsync_loop_pc = $e720 ; Address of the "Read Byte" function in ROM tt_readbyte_pc = $e6c9 ; Address of the RTS at the end of the read byte function tt_readbyte_end_pc = $e6fb ; Set carry at end of readbyte routine? tt_readbyte_setcarry = yes ; In order to simulate the effects of the read byte routine, you can ; specify an address to write the byte read, and an address to write ; zero to. tt_readbyte_storebyte_addr = $002f tt_readbyte_storezero_addr = $02b1 ; Address of the "put byte" function in ROM tt_putbyte_pc = $e65e ; Address of the RTS at the end of the put byte function tt_putbyte_end_pc = $e68a ; Address of the RTS at the end of CSAVE tt_csave_end_pc = $e93c ; Address of the RTS at the end of STORE tt_store_end_pc = $e9d0 ; Address of the function that writes the tape leader ; (so we can write a shorter one) tt_writeleader_pc = $e75a tt_writeleader_end_pc = $e769 ; Patch default Pravetz keyboard layout $3F78:37EAEDEB20F5F938EEF436392CE9E8EC $3F88:35F2E23B2EEFE730F6E6342D0BF0E52F $3F98:0000000000000000311BFA00087FE10D $3FA8:F8F1325C0A5DF37C33E4E327095BF73D $3FB8:264A4D4B2055592A4E545E283C49484C $3FC8:2552423A3E4F47295646245F0B50453F $3FD8:0000000000000000211B5A00087F410D $3FE8:585140600A7D537E23444322097B572B