Jump to content


  • Content Count

  • Joined

  • Last visited

Community Reputation

30 Excellent

About jltursan

  • Rank
    Star Raider

Contact / Social Media

Profile Information

  • Gender
  • Location
    Madrid, Spain
  • Interests
    Old vintage computers!

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. The results are really good, specially the brute force examples. I like how the "block" characters are being used. Btw, I find a little annoying the amount of alphanumeric characters filling the more or less solid color surfaces. Is there a way to forbid the use of part of the character set or tune a bit the color contrast to avoid detecting so much differences inside a (mostly solid) surface?.
  2. Yep, the header was cleaned with isopropyl, the rails lubbed, etc., I've already tested a couple of disks but you're right, maybe I need to test a pile of floppies to be absolutely sure, they're not reliable at all right now. Next, I'll probably try the Gotek installation.
  3. Indeed, my drive is only failing in verifying newly formatted disks, it still seems to be able to read disks. As it looks like the drive can't write, I've been testing some write procedures and strangely enough, it can write small pieces of data (e.g.: copying a small file). I'm puzzled... Many thanks!. The Gotek+flashfloppy procedure could serve as a way to test if the controller is in working state...
  4. Well, I've found this thread talking about connecting a Gotek, so the cable wiring must be more or less the standard. Note that the original drive is still in place and being powered, maybe is still giving some signals that allows the Gotek to work. I'm saying this because already tried to swap the drive mechanism with a new working one (a 5.25" 360K standard floppy drive) without success, no signals of life when booting the Adam; so my guess is that something it's not fully standard with this controller.
  5. I never ended up using a "stack-blasting" sprite routine as I usually need routines a little bit more universal, of course they can be enhanced; but they're hard to adapt as you are using all available registers (the more registers, the faster you can get). However, this next routine is between my favorites, used to fill RAM with a value very fast: ; HL=start ; DE=length ( must be multiple of 8 ) ; A=byte fillram: ld (stack),sp ; Only remove if you're sure you don't need the stack add hl,de ld sp,hl ; start = FINAL_ADDRESS+1 srl d rr e ; LENGTH_TO_FILL/2 srl d rr e ; LENGTH_TO_FILL/4 srl d rr e ; LENGTH_TO_FILL/4 ld h,a ld l,a ; HL= bytes to fill ld b,e dec de inc d .loop: [4] push hl djnz .loop dec d jp nz,.loop ld sp,(stack) ret
  6. Oh, that's a nice addition. The changelog doesn't mentions this feature as part of 1.0; but indeed the versions log is a bit confuse, there's no "0.9" release in there. I'm not sure about what exact version I have, seems it's worth to try updating.
  7. The stack blasting techniques come from the use of stack to quickly transfer (or fill) data. Think that the fastest way to put a byte in RAM is by means of a "LD (HL),A" that runs in 7 t-states; using an "LDI", 16 t-states, you can get some extra speed if you can take profit of the extra updated registers. Now, using the stack, you can "PUSH xx" 2 bytes at a cost of only 11 t-states. Of course it's not so good, you need to load the PUSHed register and build around the code needed to really transfer a block... As an example: ld (savesp),sp ; saves the real stack ld sp,sprite_data+12 ; 10 pop de ; 10 pop bc ; 10 exx ; 4 pop de ; 10 pop bc ; 10 pop ix ; 14 pop iy ; 14 ld sp,$3000+4 ; 10 push ix ; 15 push iy ; 15 ld sp,$3000+40+4 ; 10 push de ; 11 push bc ; 11 ld sp,$3000+80+4 ; 10 exx ; 4 push de ; 11 push bc ; 11 ld sp,(savesp) ; restores the real stack That untested and rough code dumps a 4x3 chars image without attributes to a fixed screen position (top left area). The code can increase its complexity a lot when trying to parametrize its use and making it as "universal" as possible. Right now AF or HL are not being used, you can use them to implement some logic or trade its use in benefit of the stack chain. This code run in 190 t-states so this is about 11 t-states per byte transferred, close to expected. About the so-called "auto-modifying" code, it just means that you can dinamically "overwrite" you code poking data over it. Usually you're not going to overwrite instruction codes (of course sometime you can and it's really handy), it's common to change data values like the ones loaded in the "LD SP,nn" instructions above, "nn" can be replaced easily and you're self-modifying your code 🙂 Hope you get the idea...
  8. That scares me to the bone, if there's some kind of head wiring problem, the drive will be 99% ruined. I don't have a 100% good working drive so I can't compare measured resistances between both heads. Also, seems hard to replace the drive mechanism, there're some extra cables unknown to me...I need to check ASAP the controller schematics.
  9. My Adam disk drive has also weird problems 😔. At first sight seems to work fine, I've the aforementioned Disk Manager or CP/M disks; but if I boot them and try to format a floppy, it works but it never verifies fine, fails the very first track. Sadly is my only Adam drive so I can't easily swap drive mechanisms or controller boards. The Adam disk drive is a complex beast to diagnose...😕
  10. Really nice!, I doubt you can get any better 1-bit sound with the machine 😀
  11. At least the assembler source code found in Bruce's page seems to have an "1.0" as reported version. There's no binary tho...you need to compile it or I can try to do it for you.
  12. If you're absolutely in need of saving cycles the fastest way to dump a graphic is using stack-blasting; but to do so "easily" you need to assume an even width of graphics or auto-modifying code. This way you can POP registers (HL',DE',BC',HL,DE,BC,IX,IY: 16 bytes width) from source and PUSH them into destination, tricky and a bit dirty but there're no fastest ways to do it 🙂 ld hl, 12930 ;10 t-states ld (hl), nn ;10 t-states inc hl ;11 t-states ld (hl), nn ;10 t-states inc hl ;11 t-states ld (hl),nn ;10 t-states inc hl ;11 t-states ld (hl),nn ;10 t-states ld hl, 12970 That's good enough, sadly there's no way to use "INC L" instead "INC HL" due the Aquarius 40 bytes screen width 😠
  13. I've no experience coding in Aquarius BASIC; but probably a good text editor like Notepad++ with a home-made Aquarius BASIC syntax highlighter could be enough. Btw, have you checked [AQUARIUS] BASIC Programming on the Aquarius?
  14. Good idea, that could be really useful to speed up a development.
  15. Micro-Expander support?, that's really cool!
  • Create New...