All posts by fash
Old Skool Intro with funny qoutes
Qoutes from people i knew at that time. Also teachers and students from the MTS.
Old old pictures, our TV remote!
(Date not certain)
Below one of the two setups we made to control our TV. The kind of TV which was big, ungly and without remote.
This version used 3 strings.
One for moving a little wooden piece to the left, one for moving to the right and one for pressing a bunch of nails agains a touch/capacitive button. (We only used channel 1 till 4 i believe)
The other version used a string per channel.
A piece of metal, with at the end of it a little alumium-foil ball
VGA image on dos without borders.
This year i’ve been really into assembly on Intel x86 machines.
With EDK we made some demo’s and generally trying to find the limits of the machines we had.
Funny story, edk made a program which changed the palette every scanline (if memory serves me right), while running the program and looking at the screen the colors faded to grayscale. (Something with run-away tables) We look at eachother and said: We must have been using up all colors, we need to refill the graphics card.
I previously made a copperbar alike thingy on a hercules system. (Have not seen them before on a pc back then )
But with below program, i could display pictures which removed the borders.
Below a nsfw video example (pass protected), but a simplified example in pictures below that.
Test image i’ve used on a 320×200 screen resolution
name split_screen .286 parm_vert equ 0 data segment intmsk db ? oldvidtab db 18h dup (?) ;actuele video-parameters newvidtab label byte ;HORIZONTAAL db 0 db 12 db 12 db 0 ;VERTIKAAL db 0 db 5 db 5 db 0;-40 ; db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 ; REGISTER 13H (OFFSET) db 0 ; db 18h dup (0) data ends stack segment stack dw 128 dup (?) stack ends code segment assume cs:code,ds:data cols label byte set_scrparms: mov dx,3d4h mov al,11h out dx,al inc dx in al,dx and al,7fh ;clear bit 7: enable writes to vga reg 0..7 out dx,al dec dx mov al,13h ;offset register out dx,al inc dx in al,dx ;get actual value add al,4 out dx,al ret ; ; RE-INIT DISPLAY ROUTINE ; get_oldvidparms: mov dx,3d4h mov cx,18h ;18h registers mov di,offset oldvidtab mov bl,0 ;begin met register 0 govp1: mov al,bl ;register index out dx,al inc dx ;3d5 in al,dx ;get actual register content dec dx mov [di],al inc di inc bl ;volgend register loop govp1 mov si,offset oldvidtab mov di,offset newvidtab mov cx,18h donewparms: mov al,[si] add al,[di] mov [di],al inc si inc di loop donewparms ret set_newvidparms: mov dx,3d4h mov cx,18h ;18h registers mov si,offset newvidtab mov bl,0 ;begin met register 0 snvp1: mov al,bl ;register index out dx,al inc dx ;3d5 mov al,[si] inc si out dx,al ;set register value dec dx inc bl ;volgend register loop snvp1 ret ; ; MAIN ENTRY POINT ; init: mov ax,data mov ds,ax in al,21h mov intmsk,al cli mov al,11111101b out 21h,al sti mov ax,13h int 10h ;extend video-memory to 256kb or more mov dx,3ceh mov al,06h out dx,al inc dx in al,dx and al,0f3h out dx,al ; mov ax,0a000h mov es,ax call set_scrparms call get_oldvidparms call set_newvidparms mov dx,3cch in al,dx and al,03fh mov ah,parm_vert ror ah,2 or al,ah mov dx,3c2h out dx,al ; ; push ds mov ax,5000h mov ds,ax ; ; pallet ; setpal: mov dx,3c8h xor al,al out dx,al inc dx mov cx,256*3 mov si,100h cld rep outsb ;disp picture routine mov ax,6000h mov ds,ax mov si,0 mov di,0 mov ax,0 mov cx,352*8 cld rep stosw mov si,di mov cx,8 cld rep stosw mov bp,170 mov si,di hiero: mov cx,320 cld rep movsb mov ax,0 mov cx,16 cld rep stosw mov si,di dec bp jnz hiero xor si,si xor di,di mov ax,0b000h mov es,ax mov ax,07000h mov ds,ax mov cx,3000 cld mov ax,0 rep stosw mov ax,0a000h mov es,ax mov ax,6000h mov ds,ax mov di,0 mov si,di rhiero: push ax mov ah,8 int 21h pop ax std mov cx,-1 rep movsb xor si,si xor di,di mov ax,0b000h mov es,ax mov ax,07000h mov ds,ax mov cx,3000 cld rep movsw mov ax,0a000h mov es,ax pop ds ; mloop: mov dx,3dah wtv1: in al,dx test al,8 jnz wtv1 wtv2: in al,dx test al,8 jz wtv2 mov ah,1 int 16h jz mloop xor ah,ah int 16h exit: mov ax,3 int 10h cli mov al,intmsk out 21h,al sti mov ax,4c00h int 21h code ends end init
Sakura demo
I think i started programming in assembly on PC around 1992. I learned a lot from my friend Edk. Who was a assembly wizard just like Sepp. Reverse engineering routines, writing emulators etc.
We made several demo’s like the one below. It must have been around 1994.
Just after this one, we started a demo which could run from a 5.25″ boot disk. No dos operating system.
When starting your pc, booting from a floppy you would get a starfield, with some text (from a bootsector) ,after that it would load the next sectors, wich contained the rest of the demo.
Due to directly programming soundcard and graphics card, this was hard to pull off on different kinds of hardware.
Demo gfx
Example of assembly code for a effect.
NAME plasma
.model small
.386
.data
colshades db +001h, 001h,+001h
db -001h,-001h,-000h
db +000h,-000h,-001h
db -000h,-000h,+000h
rgb_cols db 256*3 dup (?)
cosptr dw 0
sinptr dw 30
.code
demo proc near
show proc near
xor di,di
mov bp,200
show1:
mov cx,320
mov si,0
mov dx,0
show0:
; push ds
; mov ax,7000h
; mov ds,ax
; lodsb
; pop ds
call getsincos
add cosptr,1
stosb
loop show0
; add dx,1
add sinptr,1
dec bp
jnz show1
ret
show endp
effect proc near
; add cosptr,1
; add sinptr,0
ret
effect endp
getsincos proc near
push di
push ds
mov si,cosptr
mov di,sinptr
mov ax,7000h
mov ds,ax
lodsb ;get cos value
cmp si,320 ;einde costab?
jb cosok
xor si,si
lodsb
cosok:
mov ah,al
xchg si,di
lodsb ;get cos value
cmp si,320 ;einde costab?
jb sinok
xor si,si
lodsb
sinok:
xchg si,di
pop ds
mov cosptr,si
mov sinptr,di
mov dx,0
mov dl,al
add dl,ah
adc dh,0
shr dx,1
mov al,dl
; xor al,ah
; add al,ah
pop di
ret
getsincos endp
setcols proc near
push es
push ds
pop es
mov di,offset rgb_cols
mov si,offset colshades
mov dl,0 ;start with black
mov bh,0
mov bl,0
mov bp,4
set_rgball:
mov cx,64-1
set_rgb:
mov al,dl
stosb
mov al,bh
stosb
mov al,bl
stosb
mov al,[si]
add dl,al
mov al,[si+1]
add bh,al
mov al,[si+2]
add bl,al
loop set_rgb
add si,3
dec bp
jnz set_rgball
pop es
ret
setcols endp
setrgb proc near
mov dx,3c8h
xor al,al ;start with colour 00h
out dx,al
inc dx
mov si,offset rgb_cols
mov cx,256*3
rep outsb ;set 256 RGB values
ret
setrgb endp
wvtr proc near
mov dx,3dah
wtv:
in al,dx
test al,8
jz wtv
ret
wvtr endp
start:
cld
mov ax,@data
mov ds,ax
mov ax,0a000h
mov es,ax
mov ax,13h
int 10h ;screen 320x200 256 colours
call setcols
call setrgb
call show
mov al,11111101b
out 21h,al ;disable int
mloop:
call wvtr
; call show
call effect
mov ah,1
int 16h
jz mloop
xor ah,ah
int 16h
exit:
xor al,al
out 21h,al ;enable int
mov ax,3
int 10h ;screen 80x25 text
mov ax,4c00h
int 21h ;back to DOS
demo endp
end start
Pipeband comeback LUV
With the pipeband i was at that time, we where asked to perform with Luv. Exciting day. Shame we had to mimic playing the melody.
Parts where recorded a few hours before the show.
I was one of the few who could actually play the melody.
Myst and more
Around 1993 i bought Myst, a adventure game.
It was really a masterpiece, a interactive rendered world with great moodsetting music scores.
When looking at documentaries like these: https://www.youtube.com/watch?v=EWX5B6cD4_4
It almost didn’t happen, i was oblivious to this fact ..
Many hours i spent playing this game, sometimes together with Erik.
I loved the puzzles and the rendered transitional movies.
After the first i bought all follow-ups.
I spend hours playing them, first with Erik and later with Monique and Coline taking turns at the controls. Solving the mysteries together was a lot of fun.
- 1993 – Myst
- 1997 – Riven
- 2001 – Myst III: Exile
- 2003 – URU: Ages Beyond Myst
- 2004 – Myst IV: Revelation
- 2005 – Myst V: End of Ages
There is also a parody version called Pyst
After that i found realmyst a remake of the first with better graphics.
We played Uru: Ages beyond myst or Uru Live after that. This one had free movement i recall.
I wanted to create a point and click/walk around version myself.
My first idea was taking pictures in my fathers car driving from Holten to Laren where Martin lived. Taking pictures (with a analog camera) on the way. Scanning those analog pictures and making a point and click thingy was something i only realized many years later.
I made a website with pictures of the house. People could click and move though my house. I made the path which was obvious in advance, when people clicked a new area or object, they got a popup where you could request the path or object information.
(i found the source code – now i have to make a webserver with a really old php version to get screenshots)
I never came around it to render environments myself .. see my post about rendering.
My Myst IRL in canada (2015)
Composed a Jig for a friend
Discman hack
I bought a Discman, the cheapest in the series (Don´t know the brand any more)
So it didn´t had all the functions of his bigger brother.
Like fast forward and some other things i can´t remember.
Opened it up and checked the chips on the board.
Soldering some wires (on smd chips! .. so very small) and some buttons, i’ve got the extra functions!
While adding these functions, i had an idea. How to connect this Discman to my Amiga!
I’ll post more info when i find these!
I found some binaries and source:
cdplay.s – source
Binaries for following functions:
fwd
mem
pause
play
remain
repeat
rev
stop
Years later i removed the cover completely and made a floating disc player.
(The lid had a magnetic part which could hold the disc in place.
So i ended up having only a PCB motor and a magnet to hold the disc attached to the motor.
Composed a Piobaireachd
The word ‘piobaireachd’ literally means pipe playing or pipe music, but is now used to describe the classical music of the Great Highland Bagpipe. Another name for it is ‘ceòl mór’ meaning the’big music’, which separates piobaireachd from all other forms of pipe music (marches, reels, jigs etc. ) which are referred to as ‘ceòl beag’ – the little music.
To describe a piobaireachd is not easy. It consists of a theme or ‘ground’ with variations (which vary in number and complexity) that follow the theme. The theme is often very slow, and the general effect of the whole piece of music is slow – slowness being a characteristic of Highland music, though not, obviously, the dance music.