Search the Community
Showing results for tags 'xex'.
-
Hello there o/ I bring to your attention my little project "Astarta-ESP32" for Atari XE/XL. About project Astarta-ESP32 is a hardware emulator of some devices for ATARI 8bit: four independent disk drives with an opportunity read/write (D1-D4); tape recorder emulator with the ability to (only) read at standard speed; real time clock (RTC) via APE TIME protocol (supported by SpartaDOS). This implementation is the second version of the project and is based on the ESP-WROOM-32 microcontroller. The first version was implemented based on the Arduino DUE board. In addition to the ESP32 board itself, the ST7735 display, an SD card module, four buttons (for navigation), a pair of resistors for pairing 3.3 and 5 volts, and, of course, a SIO connector for connecting to an Atari computer are used. In addition to emulating Atari interfacing devices, the ESP32 can: connect to a dedicated WiFi hotspot with a password; synchronize the internal clock with an NTP server on the Internet; provide real-time access to the SD card through the implementation of an FTP server. The FTP server allows you to upload, download, rename, delete both files and directories. There are some restrictions when using ftp. Since, as it turned out, there is no single ftp standard for displaying a list of files, it is likely that some ftp clients may not correctly display a list of files. For example, Total Commander works correctly, creates and deletes files, and displays the correct creation date. There is also a restriction on the characters used, only ASCII is supported, however there are no restrictions on the use of spaces and long file names, the main thing is that the SD card is formatted in FAT32 format. At the moment, several disk image formats are supported: ATR, XFD, partially PRO format (2 of 5 types of protection), as well as XEX pseudo-format (during mounting, a micro-floppy disk is created to which this executable file is “pasted”). There are also plans to support the ATX, DCM, SCP formats, but so far these are just blanks (dummy) for the future. Files in the standard CAS format are supported for loading cassettes. Now the project is at the pre-alpha stage. This means that the product is not finished and everything is not even in test mode, but rather at the stage of creative search for solutions. The code may not be optimized, and there may be errors in the work. But in any case, you can already build it yourself, take part in testing and help make this project better. Construct As mentioned above, to assemble the construction, you will need the ESP-WROOM-32 board. Perhaps other versions of the boards are also suitable, the main thing is that they are not simplified (with a lesser number of pins). Otherwise, you will have to make changes to the code yourself and reassign the numbers of connected pins. To work with an SD card, standard SPI pins are used: IO23 - vMOSI, IO19 - vMISO, IO5 - vCS, IO18 - vSCK, and, accordingly, ground and power. My adapter uses a 5 to 3.3v converter, so it is connected to the 5v pin. If your adapter does not have such a converter, you should connect the output to 3.3v, otherwise it will lead to damage to the devices. And to connect the display, a second SPI (hSPI) is used with the corresponding pins: IO13 - hMOSI, IO15 - hCS, IO4 - hDC, IO14 - hCLK, plus additional signals: IO2 - Reset and IO32 - LED (display backlight). Also, for the display to work, you must connect the ground and power 3.3v. Interaction with Atari SIO occurs through the second communication port (RX2/TX2). Zero (RX0 / TX0) is used to interact with the PC and upload firmware to the ESP32. If your ESP32 board has only two ports, then you will have to reconnect the corresponding pins and make changes to the code. For ATARI SIO, the 3.3v level is enough, so we can directly connect the DATA IN signal to IO17[TX2], the COMMAND signal to GPIO8[CTS2] without any problems. But for ESP32, the level of 5v is critical, so it must be limited. To do this, we will pass the DATA OUT signal through a block of resistors (values of 1 and 2 kOm) between IO16[RX2] and ground. To navigate through the menu sections, four buttons are used, which are connected to the corresponding signals: IO33 - Back (Cancel), IO25 - Up, IO26 - Down, IO27 - Select. As shown by a little experience of use, such navigation leaves much to be desired. In large lists, you have to press the same button (up/down) many times to find the desired file. Therefore, there are ideas to try using a micro-joystick or even an encoder. You can find more detailed build instructions on the project's github page. Here I will give just a couple more photos of the screen device: I also periodically publish various materials on the project on twitter, where you can see additional photos and videos of the device.
- 20 replies
-
- 19
-
In order to improve the support for the Atari 8-bit computer in my universal retro-development framework Cross-Lib (https://github.com/Fabrizio-Caruso/CROSS-LIB), I would like to be able to generated ATR files from the current XEX files that CC65 outputs. I need to do this in a scriptable (not through a software that requires human intervantion, e.g., clicking on an interface and/or dropping a file somewhere). Ideally I would like to do this in any POSIX environment and not just Windows/Cygwin or Linux as my framework supports all these environments. Could someone please point me to a possible solution? Solutions with a graphical interface are of no use for me as I have to mass build though my scripts for 200 targets and I don't want to make a special case for the Atari 8-bit.
-
Hi, I’m still waiting for my 65XL to get here from Mexico before I send it out for upgrading on the other side of the Atlantic. A U1MB and a VBXE is in its future thank to @flashjazzcat. I also, already have an SIO2SD, Fujinet 1.6, and an SIO2USB. The latter is hooked to one 1050.I’ve 3 other drives to test but I’m missing psu for those. I also have a kryoflux and 5.25 drive but I haven’t set that up yet. I would like to start archiving my disk. At the moment I only have APE and Prosystem. Seems to work ok for unprotected menu disk, but copy protected disk my need the use of a better software and setup. I’d also love to find an application that would permit me to create/edit/modify ATR, something like DiskMaster for the C64. For the moment I’m testing with Altria (from the Wudsn IDE). Can someone help me find whatever piece of software I may be missing, and maybe a few pointers… Link to my archive: https://drive.google.com/drive/folders/1NOPM4fwfJai7CTtWkE1HpPcUfVVmXzRK?usp=sharing Thanks in advance!
-
In the 80's I wrote many tools to manage binary files, in order analyze them (see the XEX file structure), join them (insert a splash screen), remove portions from them (remove a slash screen), split them, reallocate them (load in another address), squeeze them (extracts runs of zeros to reduce file size), refill (removes headings and puts heart bytes, usefull for Mac65 assembies), change the loading sequence of the chunks, remove headers and get just a block of data (or picture to edit), etc. Those mini tools were all written in Atari BASIC and a set of USR routines to perform "fast I/O" (the same as BGET and BPUT from TBXL). During the recent years, I've been writing some simple scripts to perform some of those things directly from my PC, just to manage XEX file quickly in the same way I did before, but without having to setup an ATR and loading my tools in an emulator. Some days ago, I decided to merge all those tools in a single one, and XEX Filter toolkit was born. "xex-filter.pl" is a small script written in perl language, and runs on any machine with the perl interpreter installed (no special modules are required). It might be a linux box (perl is native there), Windows (with Strawberry Perl or ActivePerl) or Mac. It don't have a GUI, it just works in the command line, and there are many options to combine and apply one or more actions to a file or set of them and get a new one. Running it without parameters shows the following help: xex-filter version 1.5 (2020-01-11) Copyright (c) 2020 by Victor Parada <https://www.vitoco.cl/atari/> Usage: xex-filter.pl [-option ...] [--] FILE1.XEX [FILE2.XEX ...] Options: -c c1,c2-c3,... Chunks list to select in process -s a1,a2-a3,... List of addresses where to split chunks -e a1,a2-a3,... List of memory addresses for data extraction -a a1,a2-a3,... New address list to assign to output chunks -z max Max number of bytes to fill between chunks -r Removes zeros if there are more than 4 in a row -d Writes data without address pointers or header -b Reads input as a single chunk of data at address $0000 -f Fix corrupt files by filling or discarding data -m Makes a memory map with the selected chunks -o NEW.XEX Output file (mandatory for -c -s -e -a -z -r -d and -m) Addresses between 0 and 65535 or in $hhhh format. Use "-" for a range. The most simple usage is just giving it a path to an XEX file, and it will display the file structure. For example, running without parameters over Alley Cat (downloaded from Atarimania) it gives the following report: C:\Atari\XEX-Filter>xex-filter.pl "Alley Cat.xex" Analyzing "Alley Cat.xex"... -: 65535 [$FFFF] (binhead) 1: 708-712 [$02C4-$02C8] (5) PROG/DATA -: 65535 [$FFFF] (binhead) 2: 48724-48920 [$BE54-$BF18] (197) PROG/DATA 3: 48925-48930 [$BF1D-$BF22] (6) PROG/DATA 4: 48938-48967 [$BF2A-$BF47] (30) PROG/DATA 5: 48974-49151 [$BF4E-$BFFF] (178) PROG/DATA 6: 560-561 [$0230-$0231] (2) -> 48724 [$BE54] 7: 708-712 [$02C4-$02C8] (5) PROG/DATA 8: 1024-1097 [$0400-$0449] (74) PROG/DATA 9: 736-737 [$02E0-$02E1] (2) -> 1024 [$0400] 10: 7936-9048 [$1F00-$2358] (1113) PROG/DATA 11: 9053-9056 [$235D-$2360] (4) PROG/DATA 12: 9061-9064 [$2365-$2368] (4) PROG/DATA 13: 9069-9159 [$236D-$23C7] (91) PROG/DATA ... (deleted) 46: 22122-22534 [$566A-$5806] (413) PROG/DATA 47: 22539-24320 [$580B-$5F00] (1782) PROG/DATA 48: 24320-24408 [$5F00-$5F58] (89) PROG/DATA 49: 24416-24471 [$5F60-$5F97] (56) PROG/DATA ... (deleted) 151: 40319-40320 [$9D7F-$9D80] (2) -> 1 [$0001] 152: 40327-40328 [$9D87-$9D88] (2) -> 60 [$003C] 153: 40337-40349 [$9D91-$9D9D] (13) PROG/DATA 154: 40512-40513 [$9E40-$9E41] (2) -> 255 [$00FF] 155: 40526-40530 [$9E4E-$9E52] (5) PROG/DATA Clearly it was squeezed (zeros were removed), so we can restore them adding up to 128 zero bytes between chunks: C:\Atari\XEX-Filter>xex-filter.pl -o ALLEYCAT.XEX -z 128 "Alley Cat.xex" Analyzing "Alley Cat.xex"... ... (same info than before removed) Writing "ALLEYCAT.XEX"... -: 65535 [$FFFF] (binhead) 1: 708-712 [$02C4-$02C8] (5) 2: 48724-49151 [$BE54-$BFFF] (428) 3: 560-561 [$0230-$0231] (2) 4: 708-712 [$02C4-$02C8] (5) 5: 1024-1097 [$0400-$0449] (74) 6: 736-737 [$02E0-$02E1] (2) 7: 7936-24320 [$1F00-$5F00] (16385) 8: 24320-40349 [$5F00-$9D9D] (16030) 9: 40512-40530 [$9E40-$9E52] (19) 32988 bytes written Adding more than 128 bytes would also fill OS data between the splash display list pointers at address 560 and the color registers at 708-712, but some more zeros were required to fill the gap between address 40349 ($9D9D) and 40512 ($9E40), that can be also added with this tool if the splash screen is removed before and added again after the fill, with thi commands (output info omitted): C:\Atari\XEX-Filter>xex-filter.pl -o ALLEYCAT-splash.XEX -c 1-6 ALLEYCAT.XEX ... C:\Atari\XEX-Filter>xex-filter.pl -o ALLEYCAT-game.XEX -c 7-9 ALLEYCAT.XEX ... C:\Atari\XEX-Filter>xex-filter.pl -o ALLEYCAT-game-filled.XEX -z 1000 ALLEYCAT-game.XEX ... C:\Atari\XEX-Filter>xex-filter.pl -o ALLEYCAT-new.XEX ALLEYCAT-splash.XEX ALLEYCAT-game-filled.XEX ... What it is strange is that there are 2 chunks that overlaps at memory address 24320 ($5F00), and it could also be analyzed with this tool by splitting the file at that byte and running it to display the resulting XEX structure: C:\Atari\XEX-Filter>xex-filter.pl -o ALLEYCAT-split.XEX -s $5F00-$5F00 ALLEYCAT-new.XEX ... C:\Atari\XEX-Filter>xex-filter.pl ALLEYCAT-split.XEX Analyzing "ALLEYCAT-split.XEX"... -: 65535 [$FFFF] (binhead) 1: 708-712 [$02C4-$02C8] (5) PROG/DATA 2: 48724-49151 [$BE54-$BFFF] (428) PROG/DATA 3: 560-561 [$0230-$0231] (2) -> 48724 [$BE54] 4: 708-712 [$02C4-$02C8] (5) PROG/DATA 5: 1024-1097 [$0400-$0449] (74) PROG/DATA 6: 736-737 [$02E0-$02E1] (2) -> 1024 [$0400] 7: 7936-24319 [$1F00-$5EFF] (16384) PROG/DATA 8: 24320-24320 [$5F00-$5F00] (1) $00 "00000000" 9: 24320-24320 [$5F00-$5F00] (1) $10 "00010000" 10: 24321-40530 [$5F01-$9E52] (16210) PROG/DATA Hum!!! Looking at chunks number 8 and 9, we can see two different values for the same memory location. A bug from the packager? As it normally loads sequentially, we can remove the first one at chunk 8 and merge chuncks 7, 9 and 10, and also move the startup routine and RUNAD pointer to the end of the file, all this steps in one command: C:\Atari\XEX-Filter>xex-filter.pl -o ALLEYCAT-final.XEX -z 0 -c 1-4,7,9-10,5-6 ALLEYCAT-split.XEX Analyzing "ALLEYCAT-split.XEX"... -: 65535 [$FFFF] (binhead) 1: 708-712 [$02C4-$02C8] (5) PROG/DATA 2: 48724-49151 [$BE54-$BFFF] (428) PROG/DATA 3: 560-561 [$0230-$0231] (2) -> 48724 [$BE54] 4: 708-712 [$02C4-$02C8] (5) PROG/DATA 5: 1024-1097 [$0400-$0449] (74) PROG/DATA 6: 736-737 [$02E0-$02E1] (2) -> 1024 [$0400] 7: 7936-24319 [$1F00-$5EFF] (16384) PROG/DATA 8: 24320-24320 [$5F00-$5F00] (1) $00 "00000000" 9: 24320-24320 [$5F00-$5F00] (1) $10 "00010000" 10: 24321-40530 [$5F01-$9E52] (16210) PROG/DATA Writing "ALLEYCAT-final.XEX"... -: 65535 [$FFFF] (binhead) 1: 708-712 [$02C4-$02C8] (5) 2: 48724-49151 [$BE54-$BFFF] (428) 3: 560-561 [$0230-$0231] (2) 4: 708-712 [$02C4-$02C8] (5) 5: 7936-40530 [$1F00-$9E52] (32595) 6: 1024-1097 [$0400-$0449] (74) 7: 736-737 [$02E0-$02E1] (2) 33141 bytes written There are many more tricks that could be done with this tool, and I've attached it here to share it with the community. Depending on the machine where this script will run, it might be needed to change the first line to any of the following lines: #!/usr/bin/perl #!/bin/perl #!/usr/local/bin/perl #!/usr/sbin/perl Bug reports, feature suggestions and any kind of comments are welcome! Have fun! ++vitoco xex-filter.pl
- 28 replies
-
- 21
-
Hi All, One thing I really wanted to add to the Ultimate Cart was an easy way to use XEX files on the cartridge. Thanks mainly to flashjazzcat, we've now added this as a feature to the firmware. XEX files present on the SD card can now be browsed and launched just like cartridge/ROM files. Loading is practically instantaneous. You can program the attached new firmware to your Ultimate Cart using the (free download) Quartus 15.1 programmer. You will also need a USB Blaster (<$10 on ebay). Consider it a beta - there may be the odd bug. This firmware also replaces my original menu with the improved version by flashjazzcat. Since this is now part of the firmware, you should remove any older version of it from the SD cart (i.e. remove _BOOT.ROM if you have it). This will become the current firmware, and I'll upload the source files to github once this has had a bit of a wider test. I'm sure this will be a very welcome addition to the cartridge firmware, and praise and thanks should be directed to flashjazzcat who wrote the XEX loader and the improved menu - tasks both way beyond my 6502 skills! Robin 10M08SAE144C8G.zip
- 85 replies
-
- 14