Having been bored out of my brains the last few days off work sick, I decided to try and dig up some old code. I could find some binary versions of some ancient Atari ST stuff I wrote, but I couldn't find any source. I did manage to dredge up an old ModeX library I wrote in ASM many moons ago from an archive of the legendary old x2ftp site:
http://ftp.lanet.lv/ftp/mirror/x2ftp/msdos
Blast from the past :-)
; Actually Sticks Us Into ModeX - With 240 Scanlines Per Page
; Set The Variable LSCAN To The Virtual Scanline Length You Want
; Trashes AX, CX, DX, DS, SI
; Shouldn't Matter Though As This Should Be The First Thing You Call!
Set_X_240 PROC
Call Set_Graph ; Set Mode 13h
mov dx, Seq_Port
mov ax, 00604h ; Index 4 (Memory Mode Reg.) In AL
; Bit 3 = Chain 4
out dx, ax ; Kill Chain 4 Mode
mov ax, 00100h ; Index 0 (Reset Reg.) In AL
out dx, ax ; Reset Syncronous (At End Of Cycle)
dec dx ; Change Port
dec dx ; To Misc. S--t Port :)
mov al, 11100011b
out dx, al ; Sets 480 Line Mode, 25Mhz Dot Clock
inc dx ; Change Port
inc dx ; Back To Sequencer Port
mov ax, 00300h
out dx, ax ; Restart Controller
mov dx, Crtc_Port
mov al, 011h
out dx, al ; Select Index 11h (Vert.Retrace End)
inc dx ; Data Port
in al, dx ; Read In Current Bit Mask
and al, 07Fh ; 01111111 - Clear Top Bit (Write Protect)
out dx, al ; Un-Write Protect Index 0-7 Of CRTC Reg.
dec dx ; Restore Port To Index
mov ax, seg CRTC_Data_240 ; Address Of Our CRTC Data
mov ds, ax
mov si, offset CRTC_Data_240
mov cx, LCRTC_Data_240 ; Length Of Data
repz outsw ; Chuck It At The Port
mov ax, lscan
shr ax, 3 ; Number Of Words Per Scan Line
mov ah, al ; Into AH
mov al, 013h ; Port Index 013h - Logical Screen Width
out dx, ax
mov NScan, 240
Call Set_Pages
ret
Set_X_240 ENDP
Anyone else want to make themselves look old and post some old school code? :-) It's a shame I don't have any of my 68000 ASM stuff still, although I probably wouldn't even recognise it now!
Ahh.. memories :-)