Search the Community
Showing results for tags 'dasm'.
-
Hello! So I've written ASM code on the Atari 2600, 5200, 7800, 8bit, and X16, BUT I've used 8bit work shop or the X16's built in monitor because whenever I tried to assemble a file, it didn't tell me where it made the .bin file and as a result, I couldn't really use dasm. Could someone tell me how to access the assembled files?
-
I've been trying to use the DV and XXX pseudo-ops, to see what they do, but it doesn't seem to be working. I have been looking through the DASM documentation, but there's a lack of examples on it. I've tried to google some examples but couldn't find any.
-
I adapted a self-modifying 48-pixel routine from JAC!'s Silly Venture 2017 Invitro for a little personal project, and for some reason the address of one of the immediate operands in the routine, 4thColumn, is being treated as an absolute address instead of zero-page, even when zero-page addressing is specified with the .z suffix applied to a STA. Could someone help me figure out why DASM is running into this issue? I'm running version 2.20.11 on Windows. Here is the listing for my RAM declarations so far: 10 U0000 ???? seg.u RAM 11 U0080 org $80 12 U0080 13 U0080 00 00 00 00*ramDraw ds 52 ;buffer for self-modifying code 14 U0080 00 81 loadIndex equ ramDraw + 1 ;immediate operand, init'ed before draw 15 U0080 00 8f colorTable equ ramDraw + 15 ;bottom of sliding color window, init'ed during vblank 16 U0080 00 a6 4thColumn equ ramDraw + 38 ;immediate operand, set in media res 17 U00b4 00 temp ds 1 18 U00b5 00 00 bgPtr ds 2 19 U00b7 00 gfxHeight ds 1 Here are all the store instructions that I will use in relation to the self-modifying kernel (to be clear, I wish to avoid needing to use the .z suffix). I see that DASM isn't initializing the 4thColumn address. 124 f8ab 85 81 sta loadIndex 125 f8ad 85 8f sta colorTable 126 f8af 85 90 sta colorTable+1 C:\Users\galen\Desktop\vcsdev\big_mood.asm (127): error: Syntax Error '4thColumn'. 127 f8b1 8d 00 00 sta 4thColumn C:\Users\galen\Desktop\vcsdev\big_mood.asm (128): error: Syntax Error '4thColumn'. 128 f8b4 8d 00 00 sta.z 4thColumn And here is the issue exhibited in context: 99 f876 ramDrawTemplate 100 f876 a0 00 ldy #00 ;02 , 63:189 (loadIndex @ +1) 101 f878 b9 00 00 lda gfx0,y ;04 , 67 102 f87b 85 1b sta GRP0 ;03 , 70 103 f87d 85 02 sta WSYNC ;!0 104 f87f b9 00 00 lda gfx1,y ;04 , 04 105 f882 85 1c sta GRP1 ;03 , 07 106 f884 b9 00 00 lda clrTab,y ;04 , 11:033 (colorTable @ +15) 107 f887 8d 08 01 sta $100+COLUPF ;04 , 15 108 f88a b9 00 00 lda gfx2,y ;04 , 19 109 f88d 85 1b sta GRP0 ;03 , 22 110 f88f b9 00 00 lda gfx3,y ;04 , 26 C:\Users\galen\Desktop\vcsdev\big_mood.asm (111): error: Syntax Error '4thColumn'. 111 f892 8d 00 00 sta.z 4thColumn ;03 , 29 112 f895 be 00 00 ldx gfx4,y ;04 , 33 113 f898 b9 00 00 lda gfx5,y ;04 , 37 114 f89b a8 tay ;02 , 39 115 f89c a9 00 lda #00 ;02 , 41:123 (4thColumn @ +38) 116 f89e 85 1c sta GRP1 ;03 , 44 117 f8a0 86 1b stx GRP0 ;03 , 47 118 f8a2 84 1c sty GRP1 ;03 , 50 119 f8a4 84 1b sty GRP0 ;03 , 53 120 f8a6 c6 81 dec loadIndex ;05 , 58 121 f8a8 d0 cc bne ramDrawTemplate ;*2 , 60/61 122 f8aa 60 rts ;06 , 66:198 - 52 bytes The graphics and color addresses are uninitialized because I haven't written those tables yet. I just need to get past this stumbling block in the immediate operand.
- 4 replies
-
- 1
-
- self-modifying
- assembly
-
(and 1 more)
Tagged with:
-
How can you specify "align" with an offset in dasm? Take a skipDraw routine for example, where you have to make sure the graphics data starts at least n bytes after a page boundary. How can you do this in dasm without resorting to a hard-coded "org" address?
-
I was a bit bored today, so I downloaded some original source code from the Atari 2600 Connection website. The Joust code was from July 5th, 1983 and I couldn't find the ROM anywhere (though it is mentioned at AtariProtos.com. So I decided to convert the code into DASM format and create the missing ROM from it. Attached you find the converted source code and the resulting ROM. BTW: There is a little piece of extra "slowdown/freeze" code in it, which obviously was used for debugging. Also the original code didn't do real bankswitching. Joust (07-05-1983) (Atari - GCC, Mike Feinstein, Kevin Osborn) (CX2691) (Prototype).zip
- 12 replies
-
- 13
-
- Prototype
- Souce Code
-
(and 2 more)
Tagged with:
-
Hello, I've recently been learning Atari 2600 programming and I was reading some tutorials and it kept on saying that I needed DASM. I tried to download it and it is a Windows/Mac File only (I'm on Linux Mint 17.3). Any one know of a way around this? Thanks
- 6 replies
-
- Linux
- Atari 2600
-
(and 2 more)
Tagged with:
-
Hello, I wanted to try and continue my bbasic game in assembly so I got dasm and jedit, but after saving my file and trying to assemble it I only get this message. START OF PASS: 1 Warning: Unable to open 'kernel.asm' ---------------------------------------------------------------------- SEGMENT NAME INIT PC INIT RPC FINAL PC FINAL RPC INITIAL CODE SEGMENT 0000 ???? 0000 ???? ---------------------------------------------------------------------- 0 references to unknown symbols. 0 events requiring another assembler pass. --- Symbol List (sorted by symbol) --- End of Symbol List. Complete. C:\> So far I've tried.. Running command prompt as admin. Switching macro.h and vcs.h files, I have these in the dasm folder along with my .asm files. Tried three different commands that other people here are using. Like.. C:\>DASM\dasm\dasm kernel.asm -lcollect.txt -f3 -v5 -ocollect.bin (two dasm folders, trying to assemble collect tutorial file) I think I'm using either command prompt or the support files wrong. Hopefully someone knows what i've missed. Windows 8.1
- 9 replies
-
- dasm
- unable to open
-
(and 1 more)
Tagged with:
-
Hello- I am currently trying to convert some old 6502 source code to compile with DASM. One of the commands keeps getting a syntax error and I can't figure out what to change it to. The commands are currently: LDA #HIGH MYVEC LDA #LOW MYVEC MYVEC is the label of a subroutine. Anyone know the proper DASM conversion?
-
MACROS Optimizing RAM space by overlay macros
Thomas Jentzsch posted a topic in Atari 2600 Programming
RAM is always pretty scarce on the 2600, so when developing something a bit more complex, you eventually find yourself running out of RAM space. To overcome this, people have defined versatile temporary variable areas or gave the same RAM address different labels. This is not very convenient and error-prone. To overcome this, for Boulder Dash, Andrew Davie had developed some DASM macros, which allowed using a shared RAM overlay section for multiple purposes. During a current project I have reworked those macros and made them easier to use and much more versatile. These macros allow you define as many different overlay sections as you need. Also you can nest other overlay sections into an overlay section. And all this with just two simple macros, BEGIN_OVERLAY and END_OVERLAY. Those will take care of the memory requirements, output them and also help verifying that you use them correctly. Example: Imagine you write a game which consists out of two different scenarios. Both scenarios need their own variables for display and processing. Then you use the same overlay section twice, one for the 1st and one for the 2nd scenario. For both scenarios you can then define your variables freely inside the scenario's section. You just have to make sure that the labels are still unique (local namespaces would be cool, maybe later...). Also, in one scenario, you may have variables which are local to the kernel or to processing outside the kernel. Then you can define two nested overlays inside the overlay for that scenario, one for the kernel and one for processing. And so on... The macro code looks pretty complicated, but you do not have to understand it at all . Just have a look at the example at the end of the file. Then everything should become pretty clear (I hope). If you have any requests or ideas how to make RAM variable handling even more convenient (like namespaces) then please post your ideas here. overlay.zip -
Hi, everyone. I finally decided to start really learning how to program the VCS. I already have a general idea of how the VCS builds a picture line by line and sets up the appropriate blanking and syncronization inbetween frames, so I wrote a little assembly file to confirm if I actually know what I'm doing (all it's supposed to do is increment X and set PF1 and COLUPF to that value once every frame). However, every time I've tried assembling it with DASM the past few days, DASM trips up on something in the file and can't resolve any of the labels I've set up. What's more, the list file DASM produced reports "Unknown Mnemonic" errors on every single line of the assembly file. I'm using DASM v2.20.11 for Windows with v1.05 of vcs.h and v1.06 of macro.h. The command line I used is "dasm bartest2.asm -f3 -v4 -Lbars-l.txt -sbars-s.txt -obartest2.bin". Below is the assembly and DASM's output, and I've attached the list file. Is there some boneheaded fundamental mistake I'm making? Assembly: PROCESSOR 6502 INCLUDE "vcs.h" INCLUDE "macro.h" ORG $f800 init: CLEAN_START lda #2 sta VBLANK startFrame: VERTICAL_SYNC lda #44 sta TIM64T vertBlank: sta WSYNC lda INTIM bne vertBlank stx PF1 stx COLUPF lda #0 sta VBLANK ldy #191 sta WSYNC kernel: sta WSYNC dey bne kernel inx lda #2 sta VBLANK lda #35 sta TIM64T overscan: sta WSYNC lda INTIM bne overscan jmp startFrame ORG $fffa .word init ; NMI .word init ; Reset .word init ; IRQ DASM output: START OF PASS: 1 Including file "bartest2.asm" ---------------------------------------------------------------------- SEGMENT NAME INIT PC INIT RPC FINAL PC FINAL RPC INITIAL CODE SEGMENT 0000 ???? 0000 ???? ---------------------------------------------------------------------- 0 references to unknown symbols. 0 events requiring another assembler pass. --- Symbol List (sorted by symbol) init 0000 ???? kernel 0000 ???? overscan 0000 ???? startFrame 0000 ???? vertBlank 0000 ???? --- End of Symbol List. --- Unresolved Symbol List overscan 0000 ???? startFrame 0000 ???? init 0000 ???? kernel 0000 ???? vertBlank 0000 ???? --- 5 Unresolved Symbols Thanks in advance for any help! bars-l.txt
-
I have been having some difficulty getting started with programming for the 2600. I have been able to download the emulator for games, but because I use library computers to get online and have an Apple computer, I have not been able to get the DASM assembler to work. Two questions I have are: How do I get the DASM to work with an Apple online? Is it possible to get DASM on a PC computer that is not connected to the internet? Also, for the folks at Atariage, under -- Atari 2600 Programming -- Tools & Utilities -- DASM (assembler) ; Clicking on the link brings up a "page not found" screen. I had some difficulty finding a version of DASM for my Apple and once I was able to get it, I was unable to get it to work. Any help would be appreciated. I love the site.
- 3 replies
-
- 6507programming
- DASM
-
(and 3 more)
Tagged with:
-
I am using DOSBOX to emulate DOS but after having the assembly code and dasm.exe file in the same directory, going to the directory in DOSBOX, then trying to enter "dasm mygame.asm -f3 -omygame.bin" i get an "Illegal command: dasm." PLEASE HELP!!
-
When your program has a lot of (graphics) data, you can try to save some space by overlapping the end of one data block with the beginning of the next one. While this can save quite a lot of space, it is a pretty tedious task to do that manually. Those times are over now, because now there is DOOD, the Data Overlapping Optimizer for DASM (though it should work with other assemblers too)! It offers lot of parameters which help you to tweak the results to your need. E.g. you can define page size (e.g. 256 bytes) the data should not cross (to avoid page penalties) you can have an offset into those pages (often required for kernel data) you can chose between three output formats (binary, decimal and hexadecimal) ... If an option is missing, please let me know and I will try to add it. Note: The program requires Windows XP or never. DOOD v0.91.zip
-
I'm going to try to learn the 5200 by playing around with DanB's samples on his website. I've got MESS already setup and have DASM as well. But I haven't used DASM in so long that I forgot how to do it. Would someone please tell me how to assemble ASM files with DASM, by that I mean the command line. Thanks! On a side note: Windows 7 apparently doesn't let any command line application to go full screen.
-
Hi Guys, I was wondering if it possible to declare a global variable that can be used/set in multiple macros? I haven't found a way to do this myself. Thanks, Mike
-
Hi Guys, I have started creating a few macros to tidy up some of my code and wrap up common routines. I have created a macro that copy a table of ROM addresses to RAM and for some reason its not assembling correctly in DASM. MAC COPY_TO_RAM_BUFFER .ADDRESS SET {1} .INDEX SET {2} .RAM_BUF SET {3} ldy .INDEX .copyLoop lda .ADDRESS+1,y sta .RAM_BUF+1,y lda .ADDRESS,y sta .RAM_BUF,y dey dey bpl .copyLoop ENDM Example usage: COPY_TO_RAM_BUFFER PointZeroLogoTable, 12, spriteBuf Can anyone see an obvious error looking at this? Thanks, Mike
-
I tried googling the -d flag for DASM. According to the documentation it states: "-d debug mode (for developers)" I have tried running this along with my file and all I get is: "Debug trace OFF" I was hoping that DASM would work in this mode somewhat like debug.exe in DOS for x86 assembly. I'm starting to think that this is perhaps a feature that is no longer supported? Is there something I'm doing wrong here?
-
Hi Guys, I am looking to do some 2600 dev on a Mac OS X Intel machine. I cannot seem to get a build of DASM that works for me. I have tried the build int the following thread which runs and seems to output a .bin file but it fails to run in Stella. http://atariage.com/forums/topic/185212-dasm-for-intel-macs/ I was wondering if anyone else uses DASM on mac and has a working DASM?
- 2 replies
-
- DASM
- DASM 2.20.11
-
(and 1 more)
Tagged with:
-
There's an example of a simple 5200 hello world program here http://www.atarihq.com/danb/files/52hello.txt. There's a bit that confused me, though. Specifically this loop: Start ldx #$00 lda #$00 crloop1 sta $00,x ;Clear zero page sta $D400,x ;Clear ANTIC sta $C000,x ;Clear GTIA sta $E800,x ;Clear POKEY dex bne crloop1 The x register is being set to 0, and then decremented. o_O Now I assume when you decrement a register when it's set at 0, it goes to $FF. But why would someone do it that way? Most of the other examples I see would use ldx #$FF. This is actually valid code, I've assembled it and it does create a runnable 5200 rom.
-
Is there some way to have disam display how much rom space remains everytime you compile your homebrew? I remember someone saying something allong the lines of: echo "bytes free:" *-$F800 But thatonly produces garbage output. Any assistance in this matter would be greatly appreciated. Sincerely, Primordial Ooze
- 1 reply
-
- dasm
- bytes free
-
(and 3 more)
Tagged with:
-
I am curious if anyone here knows how to assemble some of the original 7800 games from the source found at http://www.atarimuse...les/7800/games/ using DASM. I found the information in this thread (http://www.atariage....ation-and-dasm/), using the stuff in "compile.zip" that is in there, as a good start. As the game source found over at Atari Museum are in separate files, how do you assemble them as a group to create the .bin file that can be executed in emulation? I am more or less looking for the syntax necessary when running dasm to compile the game. I get how to sign the bin with the 7800 encryption and whatnot. I'd love to be able to start with one of the classic games as a beginning to learning to program the ol' ProSystem. Thanks!
-
Hey guys, I'm having a little trouble with DASM in Linux. I have DASM compiled and working in Linux Mint 9, but I don't know how to tell the assembler where the vcs.h and the macro.h files are. So of course when it tries to compile my source, it fails. Can anyone help me?