While I’ve been buying goodies from https://gotek.nl, I missed a place to buy hard to find obscure items.
And then I found https://heinpragt.nl (Last year)
Awesome! Retro parts old and new, some are very hard to find!
While I’ve been buying goodies from https://gotek.nl, I missed a place to buy hard to find obscure items.
And then I found https://heinpragt.nl (Last year)
Awesome! Retro parts old and new, some are very hard to find!
I needed to get some data from protected sheets.
But I got this on 100+ files:
F that:
Made a script to remove sheet protection and ran this in a loop over all files.
Bye bye protection.
./script.sh /mnt/fileserver/sensordata001.xlsx Parsing /mnt/fileserver/sensordata001.xlsx Archive: this.zip inflating: tmp/[Content_Types].xml inflating: tmp/_rels/.rels inflating: tmp/xl/_rels/workbook.xml.rels inflating: tmp/xl/workbook.xml inflating: tmp/xl/worksheets/sheet4.xml inflating: tmp/xl/worksheets/sheet2.xml inflating: tmp/xl/worksheets/sheet3.xml inflating: tmp/xl/worksheets/sheet1.xml inflating: tmp/xl/styles.xml inflating: tmp/xl/theme/theme1.xml inflating: tmp/xl/sharedStrings.xml inflating: tmp/docProps/core.xml inflating: tmp/docProps/app.xml adding: [Content_Types].xml (deflated 78%) adding: docProps/ (stored 0%) adding: docProps/core.xml (deflated 49%) adding: docProps/app.xml (deflated 54%) adding: _rels/ (stored 0%) adding: _rels/.rels (deflated 60%) adding: xl/ (stored 0%) adding: xl/worksheets/ (stored 0%) adding: xl/worksheets/sheet2.xml (deflated 92%) adding: xl/worksheets/sheet1.xml (deflated 46%) adding: xl/worksheets/sheet4.xml (deflated 92%) adding: xl/worksheets/sheet3.xml (deflated 92%) adding: xl/_rels/ (stored 0%) adding: xl/_rels/workbook.xml.rels (deflated 77%) adding: xl/workbook.xml (deflated 56%) adding: xl/theme/ (stored 0%) adding: xl/theme/theme1.xml (deflated 78%) adding: xl/styles.xml (deflated 57%) adding: xl/sharedStrings.xml (deflated 23%)
Bash script:
It leaves the original intact, but makes a unprotected copy named the same with unprot_ in front of it.
#!/bin/bash
if [ -n "$1" ]; then
echo "Parsing $1"
else
echo "usage : scriptname /path/to/sheet.xlsx"
exit 0
fi
name=$(basename $1)
dir=$(dirname $1)
rm -f this.zip
rm -rf tmp
mkdir tmp
cp "$1" this.zip
unzip this.zip -d tmp
find tmp/xl/worksheets/ -iname *xml -exec sed -i -e "s/<sheetProtection.*\/>//g" {} \;
cd tmp
rm -f "$dir/unprot_${name}"
zip -r "$dir/unprot_${name}" *
cd ..
Started working on my breadboard version of a 68k computer.
When it’s working, I’ll make a PCB version.
Using almost only parts I still have. (No 8mhz crystal)
The 68000 being 24 bit address and 16 bit data needs 2x 8-bit roms and 2x 8 bit ram, but i didn’t have the components yet in this picture.
While tinkering with above, my Fatter Agnus chip came in.
To make a 1mb chipmem version of your rev 5 amiga (PAL)
You need to have a newer version of the Agnus chip (I had 8371, and bought a 8372a) AND you need a 512kb trapdoor memory expansion.
An unmodded rev 5 will see 512kb Chip mem and 512 Fast mem.
Replacing the Agnus 8371 for 8372a:
I lost my PLCC puller, so I modded a paperclip into a puller 🙂


When placing the new chip, I had to tape pin 41 for PAL version.
I used Polyimide Film tape.
Next I had to cut the jumper 2 connection and solder the other pads.
(Bottom and middle disconnect and middle and top bridged)

Next was another cut on the PCB, this disables the trapdoor card detection.

Success!
I think we’ve seen Maderia .. 🙂
I bought a little notebook while being there.
I wrote about 12 pages of ideas, schematics and projects to start.

8085 Cartridge revisited
Problem with cartridge: prg is 17k, exomized 10k.
So you need 2 banks of 8k.
This disables basic rom, needed for the program.
The program needs to be relocated to 0x800 anyway.
So my exomizer options will take care of that.
But the basic is not being enabled again.
exomizer sfx sys -o data.exo -Di_ram_enter=\$37 -Di_ram_during=\$34 -f'LDA #$37 STA $01' 8085.prg xa frame.asm -o frame.bin x64 -cart16 frame.bin
Result … JAM
For my new SBC I’ll need a machine code build environment.
This is what I’ve setup now.
My main workstation is Linux based. While this setup is Linux based, vasm should work on other operating systems also.
Getting and compiling vasm for 68k
wget http://sun.hasenbraten.de/vasm/release/vasm.tar.gz tar xzvf vasm.tar.gz cd vasm # Building make CPU=m68k SYNTAX=oldstyle # Using ./vasmm68k_oldstyle -m68000 -Fbin -dotdir -no-opt source.asm # this generates a.out # Dumping the file (byte separated and with a offset of 0x8000) xxd -g 1 -o 0x8000 a.out | head 00008000: 30 3c aa aa 4e f9 00 00 80 04 00 00 00 00 00 00 0<..N........... 00008010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00008020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00008030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00008040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00008050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00008060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00008070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00008080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00008090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ # But my 68k needs an ODD EVEN eeprom # so I used another tool - romsplit git clone https://github.com/ullman/romsplit cd romsplit make all # Using romsplit ./romsplit -s a.out odd.rom even.rom # Split into 4? Split the splits using above # Output xxd -g 1 -o 0x8000 odd | head -1 ; xxd -g 1 -o 0x8000 even | head -1 00008000: 30 aa 4e 00 80 00 00 00 00 00 00 00 00 00 00 00 0.N............. 00008000: 3c aa f9 00 04 00 00 00 00 00 00 00 00 00 00 00 <............... # Burn these with minipro
Disassemble
m68k-linux-gnu-objdump --disassemble-all --target=binary --architecture=m68k a.out
68030 example for friend
# Compile vasm with make CPU=m68k SYNTAX=mot ------------ vasmm68k_mot -Fbin ./edk.asm ------------- .68030 ORG $0 ***** * exception table (256 x 4 bytes) ***** dc.l $400 ; Program Counter na reset (startadres) dc.l $20000 ; stackpointer (ram locatie) dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 org $400 ; hier starten move.l #$0,d0 loop1: add.l #$1,d0 cmp.l #$10000,d0 bne loop1 move.l #$0,d0 loop2: add.l #$1,d0 cmp.l #$10000,d0 bne loop2 nop nop nop ----- vasm 1.9f (c) in 2002-2023 Volker Barthelmann vasm M68k/CPU32/ColdFire cpu backend 2.6c (c) 2002-2023 Frank Wille vasm motorola syntax module 3.18 (c) 2002-2023 Frank Wille vasm binary output module 2.3a (c) 2002-2023 Volker Barthelmann and Frank Wille org0001:0(acrwx1): 0 bytes org0002:0(acrwx1): 1024 bytes org0003:400(acrwx2): 30 bytes ----- -rw-rw-r-- 1 henri henri 1054 aug 27 11:45 a.out
Follow-up on previous post.
I’ve posted about sounds before, annoying!
The Wilhelm scream is a stock sound effect that has been used in many films and TV series, beginning in 1951 with the film Distant Drums. The scream is usually used when someone is shot, falls from a great height, or is thrown from an explosion. See also Squeaky door.
About movie props
Not that annoying, but I can’t think about anything else as the previous film I saw the prop in.
Props in They Live (1988) I saw in 2024



Wait a minute! Thats from Ghostbusters (1984)


Even another film exists using the same prop (never seen this movie)
The prop was made using a shoe polisher thingy b.t.w.
While I’m not really a gamer, I played a very old game I loved playing on my Amiga.
Its Ports of Call.
Are there others like this game?
Ports of Call is a 1986 business simulation game developed by German duo Rolf-Dieter Klein and Martin Ulrich, and published by Aegis Interactive Entertainment.
The game simulates the management of a global freight transport company, where the player charters freight, and, using the accumulated profit, can buy more and better ships. Minigames include manually piloting your ship into a specified berth in the harbour and picking up survivors from a life-raft.
I loved the manoeuvring part, especially the large ships with both front and back rudders.
Here are some screenshots from Amiga Forever emulator


Post about other old games:
Test picture of a multiprocessor computer setup.
Using buttons on the right, I want the possibility to change between systems and keyboard settings.
Also, multiple software/OS slots for SDCards will be on the right.
The lid containing the keyboard has a handle!
After laser cutting a nice front, it could become a nice road warrior hacking station.
I’m going to replace the wireless keyboard, probably with a touch display and a programmable layout for keyboards.
Something like below
Some layouts:



I’ll probably buy this one from waveshare
Info about Faux86
Not my model, but I altered the graphics, and sizes.
See https://www.thingiverse.com/thing:23817
Very cool, you can use openscad to edit the model.
(See previous posts why I am a fan!)
Badly coloured with permanent marker.
I really need a printer like my friend Duncan!
Re-learning the little I knew (I never had a c64 as a kid).
Back to basics, welll machine code I mean.
Programming a little demo using acme.
Split screen bitmap and text mode plus sid music
Some useful commands
; Dump prg with offset 0x800 per byte and skip 00 00 lines
xxd -o 0x800 -g1 icecrew.prg | uniq -f10
; Write symbol list
acme -l icecrew.sym icecrew.asm
; png to kla (koala picture)
retropixels icecrew.png -o icecrew.kla
; relocate a sid address
sidreloc -r org.sid new.sid
Below code has some flaws:
Many empty gaps, creating a large file.
Exomizer could fix this, but better memory management should be the better solution.
The Koala file has many 0 bytes, the logo is small but the file is created for a full screen image.
!cpu 6502
!to "icecrew1.prg",cbm
; Standard basic sys runner
basic_address = $0801
; sid addresses
; address moved using
; sidreloc -r Lameness_Since_1991.sid lame.sid
; addresses found using
;sidplay2 -v lame.sid
;+------------------------------------------------------+
;| SIDPLAY - Music Player and C64 SID Chip Emulator |
;| Sidplay V2.0.9, Libsidplay V2.1.1 |
;+------------------------------------------------------+
;| Title : Lameness Since 1991 |
;| Author : Peter Siekmann (Devilock) |
;| Released : 2017 Oxyron |
;+------------------------------------------------------+
;| File format : PlaySID one-file format (PSID) |
;| Filename(s) : lame.sid |
;| Condition : No errors |
;| Playlist : 1/1 (tune 1/1[1]) |
;| Song Speed : 50 Hz VBI (PAL) |
;| Song Length : UNKNOWN |
;+------------------------------------------------------+
;| Addresses : DRIVER = $1C00-$1CFF, INIT = $0FFF |
;| : LOAD = $0FFF-$1B25, PLAY = $1003 |
;| SID Details : Filter = Yes, Model = 8580 |
;| Environment : Real C64 |
;+------------------------------------------------------+
;
sid_address = $0fff
sid_play = $1003
sid_init = $0fff
; Character
char_address = $3800
screen_mem = $4400
; Koala address
bitmap_address = $6000
bitmap_data = $7f40
bitmap_color = $8328
bitmap_bgcolor = $8710
program_address = $c000
color_mem = $d800
reg_d011 = $D011
; VIC register
;Bit 7 (weight 128) is the most significant bit of the VIC's nine-bit raster register (see address 53266).
;Bit 6 controls extended color mode
;Bit 5 selects either the text screen ("0") or high resolution graphics ("1").
;Bit 4 controls whether the screen area is visible or not.
;Bit 3 selects 25 (when set to "1") or 24 (when set to "0") visible character lines on the text screen.
;Bit 0–2 is used for vertical pixel-by-pixel scrolling of the text or high resolution graphics.
; Rom routine to clear screen ( slow ! )
; Better to do this yourself
clear_screen = $e544
* = sid_address
!bin "lame.sid",,$7c+2
; standard charset
* = char_address
!bin "charset.chr"
; drawn with gimp converted using retropixel
; retropixels icecrew.png -o icecrew.kla
* = bitmap_address
!bin "icecrew.kla",,$02
; sys 49152
* = basic_address
!byte $0d,$08,$dc,$07,$9e,$20,$34,$39,$31,$35,$32,$00,$00,$00
* = program_address
sei
; init
lda #$00
tax
tay
jsr sid_init
jsr clear_screen
jsr load_bitmap
jsr init_text
ldy #$7f
sty $dc0d
sty $dd0d
lda $dc0d
lda $dd0d
lda #$01
sta $d01a
lda reg_d011
and #$7f
sta reg_d011
; move interrupt vector to bitmap
lda #<interruptbitmap
ldx #>interruptbitmap
sta $314 ; Low Address part IRQ vector
stx $315 ; High Address part IQR vector
ldy #$1b
sty reg_d011
lda #$7f
sta $dc0d
lda #$01
sta $d01a
; trigger interrupt at rasterline 0
lda #$00
sta $d012
cli
jmp *
interruptbitmap
inc $d019
; trigger interrupt at rasterline 128
lda #$80
sta $d012
lda #<interrupttxt
ldx #>interrupttxt
sta $314
stx $315
jsr bitmap_mode
jmp $ea81
interrupttxt
; ack IRQ
inc $d019
; IRQ at line 0
lda #$00
sta $d012
lda #<interruptbitmap
ldx #>interruptbitmap
sta $314
stx $315
jsr text_mode
jsr sid_play
jmp $ea81
bitmap_mode
; bitmap graphics multicolor
lda #$3b
sta reg_d011
lda #$18
sta $d016
; switch to video bank 2 ($4000-$7FFF)
lda $dd00
and #$fc
ora #$02
sta $dd00
lda #$18
sta $d018
rts
text_mode
; set text mode hires
lda #$1b
sta reg_d011
lda #$08
sta $d016
; switch to video bank 1 ($0000-$3FFF)
lda $dd00
and #$fc
ora #$03
sta $dd00
; set charset location
; 7 * 2048 = $3800, set in bits 1-3 of $d018
lda $d018
ora #$0e
sta $d018
rts
load_bitmap
lda bitmap_bgcolor
sta $d020
sta $d021
ldx #$00
copy_bmp
; screen memory
lda bitmap_data,x
sta screen_mem,x
lda bitmap_data+256,x
sta screen_mem+256,x
lda bitmap_data+512,x
sta screen_mem+512,x
lda bitmap_data+768,x
sta screen_mem+768,x
; color memory
lda bitmap_color,x
sta color_mem,x
lda bitmap_color+256,x
sta color_mem+256,x
lda bitmap_color+512,x
sta color_mem+512,x
lda bitmap_color+768,x
sta color_mem+768,x
inx
bne copy_bmp
rts
init_text
ldx #$00
copy_txt
lda text1,x
sta $0400+520,x
lda text2,x
sta $0400+640,x
lda text3,x
sta $0400+640+120,x
lda #$06
sta color_mem+520,x
lda #$0e
sta color_mem+640,x
lda #$0e
sta color_mem+640+120,x
inx
cpx #$28
bne copy_txt
rts
text1
!scr " back to oldskool demos in 2024 "
text2
!scr " greetings to bigred & tyrone & edk "
text3
!scr " a lot to relearn - keep coding! "