Search the Community
Showing results for tags 'macos'.
-
Trying to create empty ATR files I noted the the provided tools only work on MS-Windows. Since creating an empty file isn't all that difficult I wrote wrote a little tool that can do this macOS and Linux. I also added a verify feature to check existing files for consistency. The tool works for Windows as well. I suggest to compile the file from source code as it is fairly simple will match your operating system so here a description on how to do this: Microsoft Windows Install Alire Download Alire from the Alire website: Start installation and just accept the defaults: Build the application Start the application by clicking on the icon. This will open the Alire powershell terminal window: Use cd to change into an directory of your choosing and type the following commands one at a time. Note the the directory name contains the version number and and hash code of current version and will change with each new release. alr toolchain --install "gnat" alr toolchain --install "gprbuild" alr get "atari_atr_tools" PUSHD "atari_atr_tools_1.1.3_1e2cccbb" alr build --release POPD During the build Alire ask up to 4 questions which should be answered with either Y or 1 depending on the type of question. This will build the tool for your machine. Run the Application The finished application inside the .\atari_atr_tools_1.1.3_1e2cccbb\bin\atr_tools-main.exe directory. Again: adjust for newer Versions. The --help option will show you available options. Apple macOS Install Alire Download Alire from the Alire website: The Alire distribution for macOS is just an executable inside a zip file. You can extract the zip to any location you like and add the executable flag to the alr binary. Build the application Start Terminal and change into an directory of your choosing and type the following commands one at a time. Note the directory name contains the version number and hash code of current version and will change with each new release. bin/alr toolchain --install "gnat" bin/alr toolchain --install "gprbuild" bin/alr get "atari_atr_tools" pushd "atari_atr_tools_1.1.3_1e2cccbb" ../bin/alr build --release popd During the build Alire ask up to 4 questions which should be answered with either Y or 1 depending on the type of question. This will build the tool for your machine. Run the Application The finished application is found at ./atari_atr_tools_1.1.3_1e2cccbb/bin/atr_tools-main. Again: adjust for newer Versions. The --help option will show you available options. SuSE Linux Install Alire Download Alire from the Alire website: The Alire distribution for macOS is just an executable inside a zip file. You can extract the zip to any location you like and add the executable flag to the alr binary. Build the application Start Terminal and change into an directory of your choosing and type the following commands one at a time. Note the directory name contains the version number and hash code of current version and will change with each new release. bin/alr toolchain --install "gnat_native>=12" bin/alr toolchain --install "gprbuild>=22" bin/alr get "atari_atr_tools" pushd "atari_atr_tools_1.1.3_1e2cccbb" ../bin/alr build --release popd During the build Alire ask up to 4 questions which should be answered with either Y or 1 depending on the type of question. This will build the tool for your machine. Run the Application The finished application is found at ./atari_atr_tools_1.1.3_1e2cccbb/bin/atr_tools-main. Again: adjust for newer Versions. The --help option will show you available options.
-
I'm trying to get back to writing for Atari 8 bit. However, using the emulator on my laptop seems to be a bit silly. In this day and age I should be able to just write code on my laptop and run it on simulator. It's possible to run Atari800MacX from CLI, to fire up a piece of code - or even run its generic - non macOS specific version (yay true opensource) atari800. But I don't know what workflow folks use for making software under such conditions. What compiler would you use? Are there scripts out there already? Please share. Windows users seem to be using VSCode and Altirra , but the latter is very much a monolithic piece of software that cannot be easily made cross platform. Not to mention it's not developed in the open, even tho its source code is available. So it's clearly not the right avenue to pursue. And no, I am not going back to using windows, thanksverymuch
- 14 replies
-
- 1
-
- macos
- development
-
(and 6 more)
Tagged with:
-
The following tutorial walks through the steps of building a simple program in assembler to be deployed to a cartridge for Atari 8 bit computer using the CA65 assembler. Source The newest and all historic version of the source code can be downloaded from SourceForge. Main source Complete source code: HelloWorld.s. Header The header of an contains the includes as well as the exports and imports. The main source for cartridges needs to export the cartstart and cartinit procedures. cartinit is called before the OS is initialised and should return with an RTS. cartstart is jumped to after the OS is initialised and either should not return or exit with jmp (DOSVEC). .FILEOPT compiler, "ca65 V2.19 - N/A" .FILEOPT author, "Martin Krischik «krischik@users.sourceforge.net»" .FILEOPT comment, "this Atari assembly CAR program will print the “hello world” message to the screen" .INCLUDE "atari.inc.s" .INCLUDE "OS.inc.s" .MACPACK atari .SETCPU "6502" .DEBUGINFO off .EXPORT cartstart, cartinit Read only data When using the CA65 you don't need to set absolute addresses for your data. You just specify which data your want to store and how long the data is. RODATA will be stored in the ROM itself. ;; ; Our message ; .SEGMENT "RODATA" Message: .BYTE "Hello World!",EOL .BYTE "(using a cartridge in assember)",EOL Message_Len = * - Message Read/Write data If you want to write to the data you use the DATA segment which will be place in ram staring at address $2000. ;; ; Text returned from keyboard ; .SEGMENT "DATA" Input: .RES 1 Input_Len = * - Input If you want to store data in the zero page you can use the ZEROPAGE segment. Program The actual program consist of a put string which write the text „Hello World!“ and a get string to wait for a key press. It ends with a jump to DOSVEC. Put_String and Get_String are macros explained later. ;; ; main procedure ; .SEGMENT "CODE" .ORG OS::LC_8K ;; ; the main method of a cartridges does not return. ; .proc cartstart: near Put_String Message,Message_Len Get_String Input,Input_Len jmp (DOSVEC) .endproc ;; ; cartridges have an init function which is called ; before the operating system is initialized. ; .proc cartinit: near RTS ; Continue with initialisation .endproc OS macro include Complete source code: OS.inc.s Put_String This is setting all the parameters for an PUTCHR operation using I/O block 0 which by default uses the "E:" editor device. .macro Put_String Text,Len LDX #CIO::Console ;Use IOCB 0 / Console LDA #PUTCHR ; Command Put Text Record STA ICCOM,X LDA #<(Text) ; Set low byte of message STA ICBAL,X LDA #>(Text) ; Set high byte of message STA ICBAH,X LDA #<(Len) ; Set low byte of message length STA ICBLL,X LDA #>(Len) ; Set high byte of message length STA ICBLH,X JSR CIOV ;Call cio .endmacro Get_String This is setting all the parameters for an `GETCHR` operation using I/O block 0. .macro Get_String Buffer,Len LDX #CIO::Console ;Use IOCB 0 / Console LDA #GETCHR ; Command Get Text Record STA ICCOM,X LDA #<(Buffer) ; Set low byte of buffer STA ICBAL,X LDA #>(Buffer) ; Set high byte of buffer STA ICBAH,X LDA #<(Len) ; Set low byte of buffer length STA ICBLL,X LDA #>(Len) ; Set high byte of buffer length STA ICBLH,X JSR CIOV ;Call cio .endmacro Cartridge Header Complete source code: CAR_Header.s: The cartridge header are a few bytes at the end of the cartridge. This file tells the linker what to put into the header. The header is exported as __CART_HEADER__ so the linker know that this is indeed the cartridge header. .EXPORT __CART_HEADER__: absolute = 1 .IMPORT __CARTSIZE__, __CARTFLAGS__, cartinit, cartstart ;; ; set init and main run addresses ; .SEGMENT "CARTHDR" .ORG CARTCS ; cartridge start address .WORD cartstart .ORG CART ; cartridge present indicator .BYTE $00 .ORG CARTFG .BYTE <(__CARTFLAGS__) ; Init and start cartridge, no disk, no diagnostic. .ORG CARTAD ; cartridge initialise vector .WORD cartinit .assert (__CARTSIZE__ = $2000 || __CARTSIZE__ = $4000), error, "Cartridge size must either be $2000 or $4000" Makefile Complete source code: Makefile Variables A few variables describing the current project. Package_Name := Hello_World App_Name := HELLO_A Exe_File := target/$(App_Name).CAR Object_Files := target/obj/HelloWorld.o target/obj/CAR_Header.o Map_File := target/$(App_Name).MAP Include_Dir := ../../Library Assemble The assemble command needs are passed the following options: The platform you assemble for: --target atari Where include files are located: --include-dir $(Include_Dir) Creating a listing of actual code is always helpful: --listing $(basename $(@)).lst The current output file -o $(@) And the first input file $(<) target/obj/%.o: src/main/asm/%.s ca65 \ --target atari \ --include-dir $(Include_Dir) \ --listing $(basename $(@)).lst \ -o $(@) \ $(<) Link The link command needs are passed the following options: The size of the cartridge, 8k in our case: -D__CARTSIZE__=0x2000 The cartridge flags: -D__CARTFLAGS__=0x4 The platform you assemble with indication that we want a cartridge: -C atari-cart.cfg Creating a memory mapp file of linked code is always helpful: --mapfile ${Map_File} The current output file -o $(@) All the input file $(+) $(Exe_File): ${Object_Files} ld65 \ -D__CARTSIZE__=0x2000 \ -D__CARTFLAGS__=0x4 \ -C atari-cart.cfg \ --mapfile ${Map_File} \ -o $(@) \ $(+) Run on Emulator For testing and debugging the use of an emulator like the Atari800 is recommended. Deploying is much faster and can be automated inside the makefile so a simple `make run` will start the application. Note that you need to adjust the directory and file names to your system. Atari800_System := /opt/local/share/atari800 Atari800_User := "$(HOME)/Library/Application Support/Atari800" Atari800_Exe := "/usr/local/bin/atari800" Atari800_Window := -video-accel -pal -win-height 1120 -win-width 1680 Atari800_Cart = -cart-type 1 -cart "$(Exe_File)" Atari800_Option = -autosave-config -320xe -nobasic -config "$(CURDIR)/target/$(App_Name).cfg" -xlxe_rom "$(Atari800_System)/ATARIXL.ROM" run: $(Exe_File) $(Atari800_Exe) \ $(Atari800_Cart) \ $(Atari800_Option) \ $(Atari800_Window) The Atari800 emulator also has a system monitor with single step debugger and disassembler included which makes debugging that much easier. Run on device To run the application on a real Atari a hardware cartridge is needed. The best option is a modern cartridge like Side3 which uses SD cards and flash memory as ROM storage. A Side3 cost a little more then $€£100. A classic cartridge using EEPROMs will also work but is more work to setup and only slightly cheaper. For the Side3 all you need to do is to copy the CAR file onto the SD card. This operation which can be automated using make. Side3_Deploy := /Volumes/SIDE3 side3: $(Exe_File) mkdir -p "${Side3_Deploy}/${Package_Name}" cp "$(<)" "${Side3_Deploy}/${Package_Name}"
- 2 replies
-
- 5
-
- development
- assembler
-
(and 5 more)
Tagged with:
-
Since most of us Mac users like single clicky launch thingies, I thought it might be a good idea to have a single thread for macOS Altirra to make it easier to find all relevant information and files for each release. Altirra 2.8 Lets start with Peters original thread for a Wine bottled Altirra 2.8 (32 bit): http://atariage.com/forums/topic/256928-altirra-28-wine-port-for-macos-sierra/?hl=%2Baltirra+%2B2.9&do=findComment&comment=4081583 Altirra 3.0 Then move to the his Wine bottled Altirra 3.0 thread: http://atariage.com/forums/topic/278822-altirra-30-mac-wine-port/ I polluted that thread (my bad) with an update for 3.1, including all the instructions for what it took to get it both 3.0 and 3.1 running under macOS 10.14 Mojave. Instructions that were cobbled together from the threads: 1) Take Peters original 2.8 download (bottle) and extract it. 2) Move the "altirra.app" (from extraction) to Applications folder. I also renamed it to "Altirra" from "altirra". 3) Take the download from post #15 (in the 2.8 thread above) for MacOS >= 10.13, and extract it. 4) Open Applications folder, and choose "Show Package Contents" from the context menu (right click) of "Altirra". 5) Open folder where post #15 (2.8 thread) was extracted, and choose "Show Package Contents" from the context menu of "Altirra.app". 6) In both windows navigate to the Resources folder. 7) Copy the following files from the post #15 Altirra.app Resources folder into the Altirra.app Resources folder from Petes bottle: - File: Wine.bundle - Folder: wineprefix Close Finder windows. Launch Altirra, run through setup. You'll need to navigate to your ROMS and CARTs folders using the / folder and then the tree where its stored. Seems the Wine stuff doesn't respect any aliases. I zipped the 3.0 release Wine/Altirra Application (package) in a zip that can be extracted and run as is, without having to go through all those steps. Here: https://www.dropbox.com/s/n8q30oexq5ymrju/Altirra30_Mojave.zip?dl=0 Altirra 3.1 I then updated the package for the 3.1 release by performing these steps: To get this, I took the 3.10 binaries from the Altirra site, and copied them to the folder "Altirra.app/Contents/Resources/wineprefix/drive_c/winebottler". Files: - Additions.atr - Altirra.chm - Copying - Altirra.exe - Altirra64.exe Just replacing the files still launched the 3.0 version. I did some additional thread digging and found that I also had to remove the following (one or more of these had cached data). Your install may vary in name: ~/Library/Application Support/Wine ~/Library/Application Support/Avery Lee_152528885525251 ~/Library/Application Support/com.altirra_15264834116685 (current bundle identifier) I then zipped the 3.1 release Wine/Altirra Application (package) in a zip file that can be extracted and run as is, without having to perform the additional steps. Here: https://www.dropbox.com/s/xhsvfxs38y3z1vi/Altirra31_Mojave.zip?dl=0 Alternate location in 7z format with smaller size (thanks Roland). Remove the .txt after downloading. See post #12 for details on extraction: Altirra31_Mojave.7z.txt Status 2018.12.14: This was working fine before the 10.14.2 update. With 10.14.2, it still works but will generate a warning about application compatibility in a future macOS release. 2018.12.14: Updated the 3.1 zip after editing the package metadata. Altirra in macOS application title now shows as proper case. Package version info also shows as 3.1 instead of 3.0, and Avery is credited. 2018.12.20: Added 7z version of Altirra 3.1, served directly from AtariAge.
-
Just a proof of concept...a bit slow...and without audio (needs a seperate fix...havent done it yet). Source: https://github.com/myspaghetti/macos-virtualbox Virtualization has to be activated in the BIOS of the VCS. The Atari team should really activate AMD SVM (BIOS setting) in the next update!!! ? EDIT: I just have 8Gbyte in my VCS. MacOS needs at least 4Gb, video takes another 2Gb...and Linux Mint needs RAM too. So I might buy some RAM MacOS Catalina on the Atari VCS.mkv