在我病假几天且无聊至极的时候,我决定尝试挖掘一些旧代码。我找到了我写过的一些古老的Atari ST二进制版本,但是我找不到任何源代码。我确实设法从传说中的x2ftp网站的存档中找到了我很久以前用汇编语言编写的旧ModeX库:http://ftp.lanet.lv/ftp/mirror/x2ftp/msdos。这是过去的回忆 :-)
; 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
还有其他人想要让自己看起来老一些,然后贴出一些老式的代码吗? :-) 真遗憾我现在没有我的68000 ASM的东西了,尽管现在我可能甚至都不会认识它了!
哦,回忆啊 :-)