691 lines
9.4 KiB
NASM
691 lines
9.4 KiB
NASM
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ
|
|||
|
;<3B> <20>
|
|||
|
;<3B> The SpacePigs' standard set of macros (1) <20>
|
|||
|
;<3B> <20>
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ
|
|||
|
FALSE EQU 0 ;MUST BE 0!
|
|||
|
TRUE EQU 255 ;MUST BE 255!
|
|||
|
|
|||
|
imul_256 macro
|
|||
|
cwd
|
|||
|
mov dl,ah
|
|||
|
mov ah,al
|
|||
|
xor al,al
|
|||
|
endm
|
|||
|
|
|||
|
;************************** STANDARD MAKROS ********************************
|
|||
|
PLOPP MACRO REG
|
|||
|
POP REG
|
|||
|
PUSH REG
|
|||
|
ENDM
|
|||
|
DATAMOV MACRO DE,SO,LE
|
|||
|
PUSH DI SI CX ES
|
|||
|
PUSH OFFSET DE
|
|||
|
PUSH OFFSET SO
|
|||
|
PUSH LE
|
|||
|
POP CX
|
|||
|
POP SI
|
|||
|
POP DI
|
|||
|
PUSH DS
|
|||
|
POP ES
|
|||
|
REP MOVSB
|
|||
|
POP ES CX SI DI
|
|||
|
ENDM
|
|||
|
|
|||
|
MOVAL MACRO DE,SO
|
|||
|
MOV AL,SO
|
|||
|
MOV DE,AL
|
|||
|
ENDM
|
|||
|
|
|||
|
JCXNZ MACRO LABAN
|
|||
|
LOCAL NOLABAN
|
|||
|
JCXZ NOLABAN
|
|||
|
JMP LABAN
|
|||
|
NOLABAN:ENDM
|
|||
|
|
|||
|
NIL MACRO NOLLA
|
|||
|
XOR NOLLA,NOLLA
|
|||
|
ENDM
|
|||
|
|
|||
|
MOVE MACRO DEST,SOURCE
|
|||
|
PUSH SOURCE
|
|||
|
POP DEST
|
|||
|
ENDM
|
|||
|
|
|||
|
MOVA MACRO DEST,SOURCE
|
|||
|
MOV AX,SOURCE
|
|||
|
MOV DEST,AX
|
|||
|
ENDM
|
|||
|
ADDA MACRO DEST,SOURCE
|
|||
|
MOV AX,SOURCE
|
|||
|
ADD DEST,AX
|
|||
|
ENDM
|
|||
|
ADDAL MACRO DEST,SOURCE
|
|||
|
MOV AL,SOURCE
|
|||
|
ADD DEST,AL
|
|||
|
ENDM
|
|||
|
|
|||
|
CALLE MACRO PROSEDUR ;CALL IF EQUAL
|
|||
|
LOCAL NEHE
|
|||
|
JNE NEHE
|
|||
|
CALL PROSEDUR
|
|||
|
NEHE: ENDM
|
|||
|
|
|||
|
CALLC MACRO PROSEDUR ;CALL IF CARRY
|
|||
|
LOCAL NEHE
|
|||
|
JNC NEHE
|
|||
|
CALL PROSEDUR
|
|||
|
NEHE: ENDM
|
|||
|
|
|||
|
SET_ES MACRO SEGADR
|
|||
|
PUSH SEGADR
|
|||
|
POP ES
|
|||
|
ENDM
|
|||
|
|
|||
|
SET_DS MACRO SEGADR
|
|||
|
PUSH SEGADR
|
|||
|
POP DS
|
|||
|
ENDM
|
|||
|
|
|||
|
PABS MACRO REGI
|
|||
|
LOCAL NOTNEG
|
|||
|
OR REGI,REGI
|
|||
|
JG NOTNEG
|
|||
|
NEG REGI
|
|||
|
NOTNEG: ENDM
|
|||
|
|
|||
|
NABS MACRO REGI
|
|||
|
LOCAL NOTPOS
|
|||
|
OR REGI,REGI
|
|||
|
JL NOTPOS
|
|||
|
NEG REGI
|
|||
|
NOTPOS: ENDM
|
|||
|
|
|||
|
|
|||
|
;************************ MINNES-HANTERANDE MACROS *************************
|
|||
|
|
|||
|
ALLOCMEM MACRO SIZE ;ALLOCATES THE SPECIFIED NUMBER OF BYTES
|
|||
|
PUSH BX ;RETURNS SEG-OFFSET IN AX
|
|||
|
MOV BX,SIZE
|
|||
|
SHR BX,4
|
|||
|
INC BX
|
|||
|
MOV AH,48H
|
|||
|
INT 21H
|
|||
|
POP BX
|
|||
|
ENDM
|
|||
|
|
|||
|
ALLOCMEGAMEM MACRO SIZE ;ALLOCERAR ETT VISST ANTAL PARAGRAFER
|
|||
|
;RETURNS SEG ADR IN AX.
|
|||
|
PUSH BX
|
|||
|
MOV BX,SIZE
|
|||
|
MOV AH,48H
|
|||
|
INT 21H
|
|||
|
POP BX
|
|||
|
ENDM
|
|||
|
|
|||
|
ALLOCMEGAMEM2 MACRO SIZE ;ALLOCERAR ETT VISST ANTAL PARAGRAFER
|
|||
|
;RETURNS SEG ADR IN AX.
|
|||
|
;RETURNS NO OF BYTES AVAILABLE IF -C- IN BX.
|
|||
|
MOV BX,SIZE
|
|||
|
MOV AH,48H
|
|||
|
INT 21H
|
|||
|
ENDM
|
|||
|
|
|||
|
SETBLOCK MACRO BLOCK,SIZE
|
|||
|
PUSH BX
|
|||
|
PUSH ES
|
|||
|
MOV BX,SIZE
|
|||
|
MOV AX,BLOCK
|
|||
|
MOV ES,AX
|
|||
|
MOV AH,4AH
|
|||
|
SHR BX,4
|
|||
|
INC BX
|
|||
|
INT 21H
|
|||
|
POP ES
|
|||
|
POP BX
|
|||
|
ENDM
|
|||
|
|
|||
|
DISALLOC MACRO BLOCK
|
|||
|
local nullblock
|
|||
|
PUSH AX
|
|||
|
mov ax,block
|
|||
|
cmp ax,0
|
|||
|
pop ax
|
|||
|
jz nullblock
|
|||
|
push ax
|
|||
|
PUSH ES
|
|||
|
PUSH BLOCK
|
|||
|
POP ES
|
|||
|
MOV AH,49H
|
|||
|
INT 21H
|
|||
|
POP ES
|
|||
|
POP AX
|
|||
|
nullblock:
|
|||
|
ENDM
|
|||
|
|
|||
|
FIRSTFIT MACRO
|
|||
|
MOV AX,5801H
|
|||
|
XOR BX,BX
|
|||
|
INT 21H
|
|||
|
ENDM
|
|||
|
|
|||
|
BESTFIT MACRO
|
|||
|
MOV AX,5801H
|
|||
|
MOV BX,1
|
|||
|
INT 21H
|
|||
|
ENDM
|
|||
|
|
|||
|
LASTFIT MACRO
|
|||
|
MOV AX,5801H
|
|||
|
MOV BX,2
|
|||
|
INT 21H
|
|||
|
ENDM
|
|||
|
PRINTMESS2 MACRO MESSAGE
|
|||
|
PUSHA
|
|||
|
MOV DX,OFFSET MESSAGE
|
|||
|
MOV AX,900H
|
|||
|
INT 21H
|
|||
|
POPA
|
|||
|
ENDM
|
|||
|
|
|||
|
PRINTMESS MACRO MESSAGE
|
|||
|
LOCAL MESS,GNU
|
|||
|
JMP SHORT GNU
|
|||
|
MESS DB MESSAGE,'$'
|
|||
|
GNU: PUSHA
|
|||
|
PUSH DS
|
|||
|
MOV AX,CS
|
|||
|
MOV DS,AX
|
|||
|
MOV DX,OFFSET CS:MESS
|
|||
|
MOV AX,900H
|
|||
|
INT 21H
|
|||
|
POP DS
|
|||
|
POPA
|
|||
|
ENDM
|
|||
|
ERRORBLIP MACRO
|
|||
|
LOCAL CONT65
|
|||
|
PUSHA
|
|||
|
SETMARG 2
|
|||
|
MOV CX,4
|
|||
|
CONT65: PUSH CX
|
|||
|
MOV CX,0FFFFH
|
|||
|
LOOP $
|
|||
|
POP CX
|
|||
|
LOOP CONT65
|
|||
|
SETMARG 16
|
|||
|
POPA
|
|||
|
ENDM
|
|||
|
|
|||
|
CARRYBLIP MACRO
|
|||
|
LOCAL NOTC
|
|||
|
JNC NOTC
|
|||
|
ERRORBLIP
|
|||
|
NOTC:
|
|||
|
ENDM
|
|||
|
|
|||
|
WAITKEY MACRO
|
|||
|
PUSHA
|
|||
|
XOR AH,AH
|
|||
|
INT 16H
|
|||
|
POPA
|
|||
|
ENDM
|
|||
|
|
|||
|
WAITOR MACRO WAITS
|
|||
|
LOCAL WAITA
|
|||
|
PUSH CX
|
|||
|
MOV CX,WAITS
|
|||
|
WAITA: LOOP WAITA
|
|||
|
POP CX
|
|||
|
ENDM
|
|||
|
|
|||
|
MEGAWAIT MACRO WAITS
|
|||
|
LOCAL WAITA
|
|||
|
PUSH CX
|
|||
|
MOV CX,WAITS
|
|||
|
WAITA: WAITOR 0
|
|||
|
LOOP WAITA
|
|||
|
POP CX
|
|||
|
ENDM
|
|||
|
|
|||
|
SYNCWAIT MACRO WAITS
|
|||
|
LOCAL WAITA
|
|||
|
PUSHA
|
|||
|
MOV CX,WAITS
|
|||
|
WAITA: SYNC
|
|||
|
LOOP WAITA
|
|||
|
POPA
|
|||
|
ENDM
|
|||
|
|
|||
|
BEEP MACRO
|
|||
|
PUSHF
|
|||
|
PUSHA
|
|||
|
MOV AH,14
|
|||
|
MOV AL,7
|
|||
|
INT 10H
|
|||
|
POPA
|
|||
|
POPF
|
|||
|
ENDM
|
|||
|
|
|||
|
BLIP MACRO
|
|||
|
LOCAL CONT
|
|||
|
PUSHF
|
|||
|
PUSHA
|
|||
|
SETMARG 4H
|
|||
|
MOV CX,4
|
|||
|
CONT: SYNC
|
|||
|
LOOP CONT
|
|||
|
SETMARG 0H
|
|||
|
POPA
|
|||
|
POPF
|
|||
|
ENDM
|
|||
|
|
|||
|
;*************************** DISK DRIVE MAKROS *****************************
|
|||
|
|
|||
|
SLACKDRIVELED MACRO
|
|||
|
MOV DX,3F2H
|
|||
|
MOV AL,0
|
|||
|
OUT DX,AL
|
|||
|
ENDM
|
|||
|
|
|||
|
WRITEFILE MACRO HANDLE,BYTES,SOURCE
|
|||
|
PUSH AX
|
|||
|
PUSH BX
|
|||
|
PUSH CX
|
|||
|
PUSH DX
|
|||
|
MOV BX,HANDLE
|
|||
|
MOV CX,BYTES
|
|||
|
MOV DX,OFFSET SOURCE
|
|||
|
MOV AH,40H
|
|||
|
INT 21H
|
|||
|
POP DX
|
|||
|
POP CX
|
|||
|
POP BX
|
|||
|
POP AX
|
|||
|
ENDM
|
|||
|
|
|||
|
WRITEFILE2 MACRO HANDLE,BYTES,SOURCE
|
|||
|
PUSH AX
|
|||
|
PUSH BX
|
|||
|
PUSH CX
|
|||
|
PUSH DX
|
|||
|
MOV BX,HANDLE
|
|||
|
MOV CX,BYTES
|
|||
|
MOV DX,SOURCE
|
|||
|
MOV AH,40H
|
|||
|
INT 21H
|
|||
|
POP DX
|
|||
|
POP CX
|
|||
|
POP BX
|
|||
|
POP AX
|
|||
|
ENDM
|
|||
|
|
|||
|
OPENFILE MACRO FILENAME ;FILENAME IN DS:FILNAME
|
|||
|
PUSH AX ;RETURNS HANDLE IN BX
|
|||
|
PUSH DX
|
|||
|
MOV DX,OFFSET FILENAME
|
|||
|
MOV AX,3D02H
|
|||
|
INT 21H
|
|||
|
MOV BX,AX
|
|||
|
POP DX
|
|||
|
POP AX
|
|||
|
ENDM
|
|||
|
|
|||
|
OPENFILE2 MACRO FILENAME ;USE THIS WHEN A REGISTER POINTS TO FILENAME
|
|||
|
PUSH AX ;RETURNS HANDLE IN BX
|
|||
|
PUSH DX
|
|||
|
MOV DX,FILENAME
|
|||
|
MOV AX,3D02H
|
|||
|
INT 21H
|
|||
|
MOV BX,AX
|
|||
|
POP DX
|
|||
|
POP AX
|
|||
|
ENDM
|
|||
|
|
|||
|
FILEPOINT MACRO HANDLE,HIGH,LOW
|
|||
|
PUSH AX
|
|||
|
PUSH BX
|
|||
|
PUSH CX
|
|||
|
PUSH DX
|
|||
|
MOV BX,HANDLE
|
|||
|
MOV CX,HIGH
|
|||
|
MOV DX,LOW
|
|||
|
MOV AX,4200H
|
|||
|
INT 21H
|
|||
|
POP DX
|
|||
|
POP CX
|
|||
|
POP BX
|
|||
|
POP AX
|
|||
|
ENDM
|
|||
|
|
|||
|
READFILE MACRO HANDLE,BYTES,DEST
|
|||
|
PUSH ES
|
|||
|
PUSHA
|
|||
|
MOV BX,HANDLE
|
|||
|
MOV CX,BYTES
|
|||
|
MOV DX,OFFSET DEST
|
|||
|
MOV AX,3F00H
|
|||
|
INT 21H
|
|||
|
MOV ES,AX
|
|||
|
POPA
|
|||
|
MOV AX,ES
|
|||
|
POP ES
|
|||
|
ENDM
|
|||
|
|
|||
|
READFILE2 MACRO HANDLE,BYTES,DEST
|
|||
|
PUSH ES
|
|||
|
PUSHA
|
|||
|
MOV BX,HANDLE
|
|||
|
MOV CX,BYTES
|
|||
|
MOV DX,DEST
|
|||
|
MOV AX,3F00H
|
|||
|
INT 21H
|
|||
|
MOV ES,AX
|
|||
|
POPA
|
|||
|
MOV AX,ES
|
|||
|
POP ES
|
|||
|
ENDM
|
|||
|
|
|||
|
GETFILESIZE MACRO HANDLE ;RETURNS SIZE IN AX
|
|||
|
PUSH BX
|
|||
|
PUSH CX
|
|||
|
MOV BX,HANDLE
|
|||
|
MOV AX,4202H
|
|||
|
XOR CX,CX
|
|||
|
XOR DX,DX
|
|||
|
INT 21H
|
|||
|
PUSH AX
|
|||
|
XOR DX,DX
|
|||
|
MOV AX,4200H
|
|||
|
INT 21H
|
|||
|
POP AX
|
|||
|
POP CX
|
|||
|
POP BX
|
|||
|
ENDM
|
|||
|
|
|||
|
GETMEGAFILESIZE MACRO HANDLE ;RETURNS SIZE IN DX,AX
|
|||
|
PUSH BX
|
|||
|
PUSH CX
|
|||
|
MOV BX,HANDLE
|
|||
|
MOV AX,4202H
|
|||
|
XOR CX,CX
|
|||
|
XOR DX,DX
|
|||
|
INT 21H
|
|||
|
PUSH AX
|
|||
|
PUSH DX
|
|||
|
XOR DX,DX
|
|||
|
MOV AX,4200H
|
|||
|
INT 21H
|
|||
|
POP DX
|
|||
|
POP AX
|
|||
|
POP CX
|
|||
|
POP BX
|
|||
|
ENDM
|
|||
|
|
|||
|
CREATEFILE MACRO FILENAME ;RETURNS HANDLE IN BX
|
|||
|
PUSH AX
|
|||
|
PUSH CX
|
|||
|
PUSH DX
|
|||
|
MOV AH,3CH
|
|||
|
MOV CX,0000H ;CH=0, CL=FILE ATTRIBUTE BYTE
|
|||
|
MOV DX,OFFSET FILENAME
|
|||
|
INT 21H
|
|||
|
MOV BX,AX
|
|||
|
POP DX
|
|||
|
POP CX
|
|||
|
POP AX
|
|||
|
ENDM
|
|||
|
|
|||
|
CREATEFILE2 MACRO FILENAME
|
|||
|
PUSH CX
|
|||
|
PUSH DX
|
|||
|
MOV AH,3CH
|
|||
|
MOV CX,0000H ;CH=0, CL=FILE ATTRIBUTE BYTE
|
|||
|
MOV DX,FILENAME
|
|||
|
INT 21H
|
|||
|
POP DX
|
|||
|
POP CX
|
|||
|
ENDM
|
|||
|
|
|||
|
CLOSEFILE MACRO HANDLE
|
|||
|
PUSH AX
|
|||
|
PUSH BX
|
|||
|
MOV BX,HANDLE
|
|||
|
MOV AX,3E00H
|
|||
|
INT 21H
|
|||
|
POP BX
|
|||
|
POP AX
|
|||
|
ENDM
|
|||
|
|
|||
|
DELETEFILE MACRO FILENAME
|
|||
|
PUSH AX
|
|||
|
MOV DX,OFFSET FILENAME
|
|||
|
MOV AH,41H
|
|||
|
INT 21H
|
|||
|
POP AX
|
|||
|
ENDM
|
|||
|
|
|||
|
DELETEFILE2 MACRO FILENAME
|
|||
|
PUSH AX
|
|||
|
MOV DX,FILENAME
|
|||
|
MOV AH,41H
|
|||
|
INT 21H
|
|||
|
POP AX
|
|||
|
ENDM
|
|||
|
|
|||
|
SETDRIVE MACRO DRIVE
|
|||
|
PUSH AX
|
|||
|
CLC
|
|||
|
MOV DL,DRIVE
|
|||
|
MOV AH,0EH
|
|||
|
INT 21H
|
|||
|
POP AX
|
|||
|
ENDM
|
|||
|
|
|||
|
GETDRIVE MACRO
|
|||
|
MOV AH,19H
|
|||
|
INT 21H
|
|||
|
ENDM
|
|||
|
|
|||
|
GETDIR MACRO DRIVE,BUF
|
|||
|
LOCAL ZEROGNU,YSED,ZFI
|
|||
|
PUSH DX
|
|||
|
PUSH SI
|
|||
|
PUSH OFFSET BUF
|
|||
|
MOV DL,DRIVE
|
|||
|
POP SI
|
|||
|
MOV AH,47H
|
|||
|
INT 21H
|
|||
|
JC YSED
|
|||
|
JMP YSED
|
|||
|
MOV SI,OFFSET BUF-2
|
|||
|
MOV CX,65
|
|||
|
ZEROGNU:INC SI
|
|||
|
CMP BYTE PTR DS:[SI],0
|
|||
|
LOOPNE ZEROGNU
|
|||
|
JCXZ YSED
|
|||
|
ZFI: INC SI
|
|||
|
MOV BYTE PTR DS:[SI],0
|
|||
|
LOOP ZFI
|
|||
|
YSED: POP SI
|
|||
|
POP DX
|
|||
|
ENDM
|
|||
|
|
|||
|
CD MACRO DIR
|
|||
|
PUSH AX
|
|||
|
PUSH DX
|
|||
|
MOV AH,3BH
|
|||
|
MOV DX,OFFSET DIR
|
|||
|
INT 21H
|
|||
|
POP DX
|
|||
|
POP AX
|
|||
|
ENDM
|
|||
|
|
|||
|
CD2 MACRO DIR
|
|||
|
PUSH AX
|
|||
|
PUSH DX
|
|||
|
MOV AH,3BH
|
|||
|
MOV DX,DIR
|
|||
|
INT 21H
|
|||
|
POP DX
|
|||
|
POP AX
|
|||
|
ENDM
|
|||
|
|
|||
|
;*************************** GRAFIK MAKROS *********************************
|
|||
|
MCGAB_OFF MACRO
|
|||
|
MOV DX,3C4H
|
|||
|
MOV AL,4
|
|||
|
MOV AH,0EH
|
|||
|
OUT DX,AX
|
|||
|
COMMENT\
|
|||
|
MOV DX,3D4H ;DOUBLE WORD MODE
|
|||
|
MOV AL,14H
|
|||
|
OUT DX,AL
|
|||
|
INC DX
|
|||
|
IN AL,DX
|
|||
|
OR AL,01000000B
|
|||
|
OUT DX,AL
|
|||
|
\
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
MCGAB_ON MACRO
|
|||
|
MOV DX,3C4H
|
|||
|
MOV AL,4
|
|||
|
MOV AH,06H
|
|||
|
OUT DX,AX
|
|||
|
MOV DX,3D4H ;COUNT BY FOUR AND NO DOUBLE WORD MODE
|
|||
|
COMMENT\
|
|||
|
|
|||
|
MOV AL,14H
|
|||
|
OUT DX,AL
|
|||
|
INC DX
|
|||
|
IN AL,DX
|
|||
|
AND AL,10111111B
|
|||
|
OUT DX,AL
|
|||
|
|
|||
|
MOV DX,3D4H ;MODE CONTROL (STANDARD ADRESSING MODE)
|
|||
|
MOV AL,17H
|
|||
|
MOV AH,11100011B
|
|||
|
OUT DX,AX
|
|||
|
;\
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
SETMARG MACRO COLOR
|
|||
|
PUSH DX AX
|
|||
|
MOV AL,CS:MARG
|
|||
|
MOV CS:OLDMARG,AL
|
|||
|
; pushf
|
|||
|
; cli
|
|||
|
MOV DX,3DAH
|
|||
|
IN AL,DX
|
|||
|
rept 3
|
|||
|
jmp $+2
|
|||
|
endm
|
|||
|
MOV DL,0C0H
|
|||
|
MOV AL,11H+20H
|
|||
|
OUT DX,AL
|
|||
|
rept 3
|
|||
|
jmp $+2
|
|||
|
endm
|
|||
|
MOV AL,COLOR
|
|||
|
MOV CS:MARG,AL
|
|||
|
OUT DX,AL
|
|||
|
; popf
|
|||
|
POP AX DX
|
|||
|
ENDM
|
|||
|
|
|||
|
RESTOREMARG MACRO
|
|||
|
PUSHA
|
|||
|
MOV CL,CS:OLDMARG
|
|||
|
SETMARG CL
|
|||
|
POPA
|
|||
|
ENDM
|
|||
|
|
|||
|
VIDEOMODE MACRO VM
|
|||
|
PUSH AX
|
|||
|
MOV AH,0
|
|||
|
MOV AL,VM
|
|||
|
INT 10H
|
|||
|
POP AX
|
|||
|
ENDM
|
|||
|
|
|||
|
SYNC MACRO
|
|||
|
LOCAL SYNC1,SYNC2
|
|||
|
push es
|
|||
|
mov dx,40h
|
|||
|
mov es,dx
|
|||
|
mov dx,es:[63h]
|
|||
|
add dl,6
|
|||
|
pop es
|
|||
|
sync1: IN AL,DX
|
|||
|
TEST AL,8
|
|||
|
JNZ SYNC1
|
|||
|
SYNC2: IN AL,DX
|
|||
|
TEST AL,8
|
|||
|
JZ SYNC2
|
|||
|
ENDM
|
|||
|
|
|||
|
SETWRITE MACRO MASK
|
|||
|
MOV DX,3C4H ;FIXA KANAL
|
|||
|
MOV AH,MASK
|
|||
|
MOV AL,2 ;TILL BITPLANS-
|
|||
|
OUT DX,AX ;MASKEN
|
|||
|
ENDM
|
|||
|
|
|||
|
|
|||
|
SETREAD MACRO PLN
|
|||
|
MOV DX,3CEH
|
|||
|
MOV AH,PLN
|
|||
|
MOV AL,4
|
|||
|
OUT DX,AX
|
|||
|
ENDM
|
|||
|
|
|||
|
SETMCGAB MACRO MEMORY_LINELEN,LINELEN_IN_SIGHT
|
|||
|
MOV AX,12H
|
|||
|
INT 10H
|
|||
|
MOV AX,13H
|
|||
|
INT 10H
|
|||
|
MOV BX,MEMORY_LINELEN ;CALC BX (SET LINE LENGTH)
|
|||
|
SHR BX,3
|
|||
|
MOV CX,LINELEN_IN_SIGHT ;CALC CX (HORIZ END)
|
|||
|
SHR CX,2
|
|||
|
DEC CX
|
|||
|
MOV DX,3D4H ;SET HORIZ END
|
|||
|
MOV AL,01H
|
|||
|
MOV AH,CL ;(DET MAN VILL HA GENOM 4)
|
|||
|
OUT DX,AX
|
|||
|
MOV DX,3D4H ;SET LINE LENGTH (I MINNESUPPBYGGNADEN)
|
|||
|
MOV AL,13H
|
|||
|
MOV AH,BL
|
|||
|
OUT DX,AX
|
|||
|
|
|||
|
MOV DX,3C4H ;SET MCGAB (NO CHAIN FOUR, USE 256KB)
|
|||
|
MOV AL,04H
|
|||
|
OUT DX,AL
|
|||
|
INC DX
|
|||
|
IN AL,DX
|
|||
|
AND AL,11110110B
|
|||
|
OUT DX,AL
|
|||
|
|
|||
|
MOV DX,3D4H ;COUNT BY FOUR AND NO DOUBLE WORD MODE
|
|||
|
MOV AL,14H
|
|||
|
OUT DX,AL
|
|||
|
INC DX
|
|||
|
IN AL,DX
|
|||
|
AND AL,11111111B ;10111111B ;10011111B SVARAR MOT KOMMENTAREN
|
|||
|
OUT DX,AL
|
|||
|
|
|||
|
MOV DX,3D4H ;MODE CONTROL (STANDARD ADRESSING MODE)
|
|||
|
MOV AL,17H
|
|||
|
MOV AH,11100011B
|
|||
|
OUT DX,AX
|
|||
|
ENDM
|
|||
|
|
|||
|
;****************************** <20>VRIGA MACROS *********************************
|
|||
|
SETMASK MACRO MASK ;INTERRUPT MASKEN!
|
|||
|
MOV AL,MASK
|
|||
|
OUT 21H,AL
|
|||
|
ENDM
|
|||
|
|
|||
|
|