Jump to content


New Members
  • Content Count

  • Joined

  • Last visited

Community Reputation

15 Good

About mike.2000

  • Rank
    Combat Commando

Profile Information

  • Gender
  • Location
    Karlsruhe, Germany

Recent Profile Visitors

566 profile views
  1. Then we're complete. Great. Also did some deeper 6502 assembly project the last 2 years. Now I know all the traps, was a fun experience.
  2. Yar's Revenve - I played it for hours on the 2600 Back in 1985 I was wondering why Atari didn't release it for the 8-Bit computers. It isn't so hard to implement. As I found out by going through my old disks, I sat down in 1985 and startet implementing my own Yar's Revenge port in ACTION! Recently I recompiled it and it's working. The UI is already done - but what I didn't implement back then was a complete gameplay, create levels, increase skill, etc... If until now there really isn't a Yar's Revenge out (I don't know), we should do that. What do you think. I uploaded my sourcecode of the unfinished project: ACTION! source code: Yar's Revenge : YARS.ACT 58 sectors. Cannot continue on that great game, can you ? Feel free to change, copy, expand, optimize my code. Even if you'll get rich with it, that's no problem for me 🙂 Mike
  3. recently I discovered a bad connection (done by me) on my 128 KB RAM upgrade for Atari 800 XL. The bad thing about is the built-in Atari Diagnostic Program only checks the 64KB or even less ? So I sat down and wrote a diagnose program for those RAM extensions. If you have trouble with your machine and want to examine the 64KB RAM chips on top of the original RAM, here's the link for you to click. Happy preservation of this greatest 8Bit HW, Mike
  4. Used Assember: MAC/65 Topic: Usage of multiple macro instances creates multiple labels. This causes wrong branching. Example: This macro gets a random number and branches depending on the value .MACRO RNDMOVE LDA $D20A ; get RDN() CLC ROR A CMP #16 BNE ?STAY ; don't move LDA #1 STA MOVEON JMP ?ZEXIT ?STAY LDA #0 STA MOVEON ?ZEXIT .ENDM The two instances used here : RNDMOVE ; Instance a) . . NOP . RNDMOVE ; instance b) What I couldnt' resolve is this: the assember generates code in a way that it creates a branch that jumps from macro instance a) to macro instance b). The branch BNE ?STAY gets the address of the ?STAY label from macro instance b) instread of a) Looked into the MAC/65 reference manual on this. Tried declaring labels as local with '?'. Also tried the .local directive that led to more assemby Errors: 606F D08F M BNE ?STAY ; don't move }ERROR - 3,BR RANGE 5,UNDEF Workaround: Use just ONE instance and use JSR + at the end of macro an RTS General question I'm asking : Doesn't the concept of macro asselblers support multiple instances. I could imagine that in times where memory was precious wasting of memory by usage of multiple macro instances was no use case.
  5. today I was still wondering why this modern software wouldn't work with my original Nick Kennedy cable. Last time I used it I also had to switch to handshake:None. But I double checked my soldering skills, RI Signal was OK. Your software is sure also OK, thats what I assumed being in service for quite a while and used by many users. So I thought it must be PC serial interface related, Maybe some poor RS232 hardware on my system? Didn't suspect Windows though. Until I (found) and read this thread. resoldered wire from P9 (RI) to P8 (CTS), changed Respeqt config to CTS and fired up my Atari: Instant success Your SW ist great, your diagnostic skills are great - You Are Great Mike
  6. Thanks Kyle22 for your help. I was looking for ACTION! source. Anyway: always interested in fractals and will habe a look at it. Maybe I'll do some ACTION programming next winter :-.) Also: To unArc your 2 files using ARC.TTP : I've seen my ST Gemulator working again since many years. It's still running on Win-10 Mike
  7. looking for a Julia/Mandelbrot fractal generator in ACTION! with srccode. Could not find any, checked the links from above already. I'm almost ready to write it by myself. Or better adapting the existing SuperHop.Act Cheerio, Mike
  8. Hi lovers of the original hardware, I know that most retroguys scoop out the mechanics of a 1010 and use the casing for a modern SIO drive based on SD card and so on. Not me, I like to keep my stuff in it's original state where possible. Sometimes I think this modern stuff in an old computer is going too far and changes the handling of the machines too much. Sure you can put in modern hardware but after all the upgrades, do you still own an Atari 800 ? Enough philosophy now, let's get down to work. Last weekend the original belt of my 1010 gave up after I played around with the drive after 10 years or so. Tried to order a replacement but didn't want to pay more than 10 bucks. Ordered a set of belts to find out that they were all too small. There seemed to be a confuision about how to measure belts by the seller, my broken belt measures 26,6 cm (I'm in Europe :-) ) That should be with minus 6 % strech divided by pi -> 8 cm. The seller calculated sth else. However I found a metallic belt in my collection of rubber rings that has the size. It can be streched more than rubber so I gave it a try. I OWN THE OTHER 1010 MODEL; NOT THE ONE FROM ABOVE So here's a second description how to replace belts for the second existing model. Follow the steps from above remove PCB carefully, remember the exact position. Three fragile mechanical switches go from board to drive, take care here not to bend them. Wires can be extended some millimeters by opening a yellow wire (seen in top right edge of picture) remove the 3 screws from attached picture now you can remove the plate - setting free the wheels the new belt is put on put in new belt, put everything back together Enjoy listening to beep noises again and wait while loading with 600 bit/s again. B.T.W: Metal "belt" make more mechanical noise like the original. In exchange to it, it will NEWER BREAK Mike
  9. Performance compare of various Atari 800 programming languages The Task: Fill a GRAPHICS 7 or GRAPHICS 15 screen All programs except the last use built-in Atari graphics routines like Graphics N Position Plot Basic program: Graphics 7 takes the computer 103 seconds Pascal program: Graphics 7 takes the computer 26 seconds. Used Kyan Pascal ACTION! program: Graphics 15 takes the computer 45 seconds. Converted to Graphics 7 transforms to 23 seconds Assember version 1: Graphics 7 takes the computer 18 seconds. I used ATMAS II Assember version 2: Graphics 15 takes the computer 2 seconds!!! I used ATMAS II without the libraries Graphical display of the time in seconds: ------------------------------------------------------------------------------------------------------- (Atari Basic) -------------------------- (KYAN Pascal) ----------------------- (ACTION!) ------------------ (Assember version 1) -- (Assember version 2) The listings for Basic, PASCAL and ACTION! aren’t shown here, as they are basically the same. You know… set GRAPHICS mode, two encapsuled FOR-Loops x,y … plot …. END. That’s a bit boring. Maybe Assembler is more interesting Here’s my lisiting: Assember version 1 program ************************************** * MICHAEL SANDAU * * PERFORMANCE ATARI 800 * * TASK:FILL A * * GRAPHICS 7 SCREEN * * using a modified library * * GRAFLIB.SRC mod is passing * * x,y parameters in * * X,Y registers direct * * FILE: SPL.SRC * *********************************************************************** * GRAFLIB.SRC * * Makro-Bibliothek * * GRAPHIK * * Fuer ATMAS-II * PETER FINZEL *********************************** ZPXPOS EQU $C0 * ZERO PAGE X ZPYPOS EQU $C1 * ZERO PAGE Y * IOCB-Struktur: * ICCOM EQU $342 ICSTA EQU $343 ICBAL EQU $344 ICBAH EQU $345 ICBLL EQU $348 ICBLH EQU $349 ICAX1 EQU $34A ICAX2 EQU $34B CIOV EQU $E456 * CIO-Befehle COPEN EQU 3 CCLSE EQU 12 CGTXT EQU 5 CPTXT EQU 9 CGBIN EQU 7 CPBIN EQU 11 CDRAW EQU $11 * ATARI Graphik-Variable ATACHR EQU $2FB ROWCRS EQU $54 CURSOR- COLCRS EQU $55 POSITION * * GRAPHICS-Befehl * * Aufruf: GRAPHICS <stufe> * * <stufe> 0 bis 15 (XLs) * 0 bis 11 (400/800) * GRAPHICS MACRO STUFE JMP GR1 @ [email protected] ASC "S:" [email protected] LDX #$60 LDA #CCLSE ZUERST KANAL 6 STA ICCOM,X SCHLIESSEN JSR CIOV LDA #STUFE JETZT NEUE GRAPHIK STA ICAX2,X STUFE ANWAEHLEN AND #$F0 EOR #$10 ORA #$0C STA ICAX1,X LDA #COPEN STA ICCOM,X LDA #[email protected] STA ICBAL,X LDA #[email protected]/256 STA ICBAH,X JSR CIOV MEND * * Auswahl der Zeichenfarbe * * Aufruf: COLOR <farbe> * * <farbe> von 0 bis 255, je nach * Graphikmodus, muss eine * Konstante sein. * COLOR MACRO COL LDA #COL STA ATACHR MEND * * Positionierung des Cursors * * Aufruf: POSITION <x>,<y> * * <x>,<y> je nach Graphikmodus, beide * UEBERGEBEN IN X UN Y REGISTER * * POSITION MACRO * LDA #X TXA STA COLCRS * LDA #X/256 ONLY 320 PIX MODE LDA #$0 STA COLCRS+1 * LDA #Y TYA STA ROWCRS MEND * Graphik-Punkte setzen * * Aufruf: PLOT <x>,<y> * * <x>,<y> je nach Graphikmodus, * VOR AUFRUF IN X UND Y REGISTER * BEFINDEN * PLOT MACRO LDX #$60 KANAL 6 LDA #CPBIN STA ICCOM,X LDA #0 STA ICBLL,X STA ICBLH,X LDA ATACHR JSR CIOV MEND ************************************** * MICHAEL SANDAU * * PERFORMANCE ATARI 800 * * MAIN PROGRAM comes here: * *************************************** ORG $A800 GRAPHICS 7 COLOR 2 LDY #$0 STY ZPYPOS OUTERY LDX #$0 STX ZPXPOS INNERX POSITION * position in x and y register PLOT * GET POSITIONS BACK LDX ZPXPOS LDY ZPYPOS INX STX ZPXPOS CPX #159 BNE INNERX INY STY ZPYPOS CPY #95 BNE OUTERY GRAPHICS 0 Assember version 2 program : - saves current display list - creates new display list for GRAPHICS 15 - does the performance by writing the pixels directly to screen memory - restores previos display list for GRAPHICS 0 The fastest performing program is written completely by me. The comparison to the other programs is not fair. The program is so specialized that it ONLY works for this particular GRAPHICS mode. ************************************** * MICHAEL SANDAU * * PERFORMANCE ATARI 800 * * TASK:FILL A * * GRAPHICS 15 SCREEN * * * * FILE: SPD.SRC * ************************************** OLOOP EQU $B0 ; OUTER LOOP SHADOW SDLISTL EQU $230 ; DL PTR LOW SDLISTH EQU $231 DL1LEN EQU 32 ; LENGTH OF 1. DL DL2LEN EQU 192 ; LENGTH OF 2. DL ZPDLL EQU $B1 ; DL PTR IN ZERO PAGE ZPDLH EQU $B2 ZPSPL EQU $B3 ; SCR PTR FOR COUNT ZPSPH EQU $B4 PIXCNT EQU $B5 ; COUNTER FOR PIX/BYTE SCRMEML EQU $00 ; SCREEN MEMORY GRAPHICS SCRMEMH EQU $80 SDLISTC EQU $AA00 ;COPY OF DL * * AdresS OF CODE * ORG $A800 * * PERFORMANCE TEST * JSR SAVEDL * SAVE DISPLAY LIST JSR SETDL * SET DL TO GRAPHICS 15 JSR PERF * do perf test JSR PERF JSR RESTDL * restore DL RTS * * **** END ****** * PERF LDA #SCRMEML ; CREATE A PTR STA ZPSPL ; TO LOOP THRU LDA #SCRMEMH ; SCREEN MEMORY STA ZPSPH * OUTER LOOP 1: X REGISTER LDX #0 LOOPXS NOP * INNER LOOP 2: Y REGISTER LDY #0 * ** SELECTING PIXELS ***** * ** AND STORE THEM IN SCREEN MEM LOOPYS LDA #$40 STA (ZPSPL),Y ; 1 PIXEL LDA #$50 STA (ZPSPL),Y LDA #$54 STA (ZPSPL),Y LDA #$55 STA (ZPSPL),Y ; 4 PIXELS * STA $D40A ; wait wsync INY CPY #39 ; NEXT BYTE BNE LOOPYS * END INNER LOOP 2 * ADD 40 TO ZERO PAGE SCREEN POINTER CLC LDA ZPSPL ADC #39 ;ADD 40 COLUMNS STA ZPSPL LDA ZPSPH ADC #0 ;ADD CARRY IF NEEDED STA ZPSPH * CONTINUE OUTER LOOP INX CPX #191 BNE LOOPXS * END OUTER LOOP 1 * END PERFORMANCE RTS ***** SAVES THE ORIGINAL DISPLAY ***** LIST SAVEDL LDY 0 LDA #$01 STA $C1 ; TRACE LDA SDLISTL STA ZPDLL LDA SDLISTH STA ZPDLH LOOPDLS LDA (ZPDLL),Y STA SDLISTC,Y INY CPY #DL1LEN BNE LOOPDLS RTS SETDL LDY #6 LDA #$E ; antic mode LPDL1S STA (ZPDLL),Y INY CPY #198 ; 192 TIMES BNE LPDL1S LDA #$41 ; SET END OF DL STA (ZPDLL),Y INY LDA ZPDLL STA (ZPDLL),Y LDA ZPDLH STA (ZPDLL),Y LDY #3 ; LMS POS LDA #$4E ; ANTIC MODE + LMS STA (ZPDLL),Y LDA #SCRMEML ;SET SCREEN MEMORY INY ;SCREENMEM LOW STA (ZPDLL),Y LDA #SCRMEMH INY STA (ZPDLL),Y RTS *** RESTORES THE OPRIGINAL DISPAY LIST RESTDL LDY #0 LDL1R LDA SDLISTC,Y STA (ZPDLL),Y INY CPY DL1LEN BNE LDL1R RTS ******* END **********************
  • Create New...