home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
assemblr
/
library
/
sampler0
/
macros.asm
< prev
next >
Wrap
Assembly Source File
|
1979-12-31
|
11KB
|
359 lines
.XLIST
;******************************************************************************
;
; MACROS
;
;******************************************************************************
BEGINCOM MACRO SEGNAM
.SALL
PAGE 57,132
SEGNAM SEGMENT 'CODE'
ASSUME CS:SEGNAM,DS:SEGNAM,ES:SEGNAM
ORG 0100H
O0O0O0O0:
ENDM
ENDCOM MACRO SEGNAM
SEGNAM ENDS
END O0O0O0O0
ENDM
@SVC MACRO CALL_NUM, PARM
;;GENERATES AN 'INT CALL_NUM', WITH PARM IN AH
IFNB <PARM>
MOV AH,PARM
ENDIF
INT CALL_NUM
ENDM
;
;
;
@DOS MACRO FUNCTION,PARM
;;GENERATES A DOS FUNCTION CALL WITH PARM IN AL
IFNB <PARM>
MOV AL,PARM
ENDIF
@SVC 21H,FUNCTION
ENDM
;
; SEND A MESSAGE
;
@MSG MACRO TXT
LOCAL TXTSTR
LOCAL NSI
IFNB <TXT>
JMP SHORT NSI
TXTSTR DB TXT,13,10,'$'
NSI: PUSH DX ;SAVE REG
MOV DX,OFFSET TXTSTR ;POINT TO STRING
@DOS 9 ;DISPLAY IT
POP DX ;RESTORE REG
ENDIF
ENDM
;
;
;
@DEX MACRO FUNCTION,PARM
;;GENERATES A DOS EXTENSION FUNCTION CALL WITH PARM IN AL VIA INT 15H
IFNB <PARM>
MOV AL,PARM
ENDIF
@SVC 15H,FUNCTION
ENDM
;******************************************************************************
;
; SPECIAL KEYBOARD CHARACTER EQUATES
;
;******************************************************************************
KEYEQ MACRO
;
; ASCII CONTROL CODES
;
$NUL EQU 00H ;
$SOH EQU 01H ;^A
$STX EQU 02H ;^B
$ETX EQU 03H ;^C
$EOT EQU 04H ;^D
$ENQ EQU 05H ;^E
$ACK EQU 06H ;^F
$BEL EQU 07H ;BEEP
$BS EQU 08H ;^H
$HT EQU 09H ;^I
$LF EQU 0AH ;LINE FEED
$VT EQU 0BH ;^K
$FF EQU 0CH ;^L
$CR EQU 0DH ;CARRIAGE RETURN
$SO EQU 0EH ;^N
$SI EQU 0FH ;^O
$DLE EQU 10H ;^P
$DC1 EQU 11H ;DEV CTL 1 = ^Q
$DC2 EQU 12H ;DEV CTL 2 = ^R
$DC3 EQU 13H ;DEV CTL 3 = ^S
$DC4 EQU 14H ;DEV CTL 4 = ^T
$NAK EQU 15H ;^U
$SYN EQU 16H ;^V
$ETB EQU 17H ;^W
$CAN EQU 18H ;^X
$EM EQU 19H ;^Y
$SUB EQU 1AH ;^Z
$ESC EQU 1BH ;
$FS EQU 1CH ;CURSOR RIGHT
$GS EQU 1DH ;CURSOR LEFT
$RS EQU 1EH ;CURSOR UP
$US EQU 1FH ;CURSOR DOWM
;
; NUMERIC PAD KEYS
;
$HOME EQU 71
$CSRUP EQU 72
$PGUP EQU 73
$CSRL EQU 75
$CSRR EQU 77
$END EQU 79
$CSRDN EQU 80
$PGDN EQU 81
$INS EQU 82
$DEL EQU 83
;
; PROGRAM FUNCTION KEYS
;
$PF01 EQU 3BH ;STANDARD PF KEY
$PF02 EQU 3CH ;STANDARD PF KEY
$PF03 EQU 3DH ;STANDARD PF KEY
$PF04 EQU 3EH ;STANDARD PF KEY
$PF05 EQU 3FH ;STANDARD PF KEY
$PF06 EQU 40H ;STANDARD PF KEY
$PF07 EQU 41H ;STANDARD PF KEY
$PF08 EQU 42H ;STANDARD PF KEY
$PF09 EQU 43H ;STANDARD PF KEY
$PF10 EQU 44H ;STANDARD PF KEY
;
; SHIFTED PROGRAM FUNCTION KEYS
;
$SPF01 EQU 54H ;STANDARD PF KEY
$SPF02 EQU 55H ;STANDARD PF KEY
$SPF03 EQU 56H ;STANDARD PF KEY
$SPF04 EQU 57H ;STANDARD PF KEY
$SPF05 EQU 58H ;STANDARD PF KEY
$SPF06 EQU 59H ;STANDARD PF KEY
$SPF07 EQU 5AH ;STANDARD PF KEY
$SPF08 EQU 5BH ;STANDARD PF KEY
$SPF09 EQU 5CH ;STANDARD PF KEY
$SPF10 EQU 5DH ;STANDARD PF KEY
;
; CONTROL PROGRAM FUNCTION KEYS
;
$CPF01 EQU 5EH ;STANDARD PF KEY
$CPF02 EQU 5FH ;STANDARD PF KEY
$CPF03 EQU 60H ;STANDARD PF KEY
$CPF04 EQU 61H ;STANDARD PF KEY
$CPF05 EQU 62H ;STANDARD PF KEY
$CPF06 EQU 63H ;STANDARD PF KEY
$CPF07 EQU 64H ;STANDARD PF KEY
$CPF08 EQU 65H ;STANDARD PF KEY
$CPF09 EQU 66H ;STANDARD PF KEY
$CPF10 EQU 67H ;STANDARD PF KEY
;
; ALTERNATE PROGRAM FUNCTION KEYS
;
$APF01 EQU 68H ;STANDARD PF KEY
$APF02 EQU 69H ;STANDARD PF KEY
$APF03 EQU 6AH ;STANDARD PF KEY
$APF04 EQU 6BH ;STANDARD PF KEY
$APF05 EQU 6CH ;STANDARD PF KEY
$APF06 EQU 6DH ;STANDARD PF KEY
$APF07 EQU 6EH ;STANDARD PF KEY
$APF08 EQU 6FH ;STANDARD PF KEY
$APF09 EQU 70H ;STANDARD PF KEY
$APF10 EQU 71H ;STANDARD PF KEY
ENDM
;******************************************************************************
;
; COMM CARD REGISTER EQUATES EQUATES
;
;******************************************************************************
COMEQ MACRO
;
; INS8250 ACE REGISTERS FOR COMM PORT 1
;
THRCOM1 EQU 3F8H ;TRANS HOLDING REGISTER (WRITE)
RBRCOM1 EQU 3F8H ;RECEIVER BUFFER REGISTER (READ)
IERCOM1 EQU 3F9H ;INTERRUPT ENABLE REGISTER
LCRCOM1 EQU 3FBH ;LINE CONTROL REGISTER.
;BIT 7 OF LCR IS "DLAB". DLAB MUST
;BE ZERO TO ACCESS THR, RBR, IER.
MCRCOM1 EQU 3FCH ;MODEM CONTROL REGISTER
LSRCOM1 EQU 3FDH ;LINE STATUS REGISTER
MSRCOM1 EQU 3FEH ;MODEM STATUS REGISTER
;
; INS8250 ACE REGISTERS FOR COMM PORT 2
;
THRCOM2 EQU 2F8H ;TRANS HOLDING REGISTER (WRITE)
RBRCOM2 EQU 2F8H ;RECEIVER BUFFER REGISTER (READ)
IERCOM2 EQU 2F9H ;INTERRUPT ENABLE REGISTER
LCRCOM2 EQU 2FBH ;LINE CONTROL REGISTER.
;BIT 7 OF LCR IS "DLAB". DLAB MUST
;BE ZERO TO ACCESS THR, RBR, IER.
MCRCOM2 EQU 2FCH ;MODEM CONTROL REGISTER
LSRCOM2 EQU 2FDH ;LINE STATUS REGISTER
MSRCOM2 EQU 2FEH ;MODEM STATUS REGISTER
ENDM
;******************************************************************************
;
; BIOS LOW CORE AREA DEFINITIONS
;
;******************************************************************************
BIOSM MACRO LSTCTL
IFB <LSTCTL>
.XLIST
ENDIF
IFNB <LSTCTL>
.LIST
ENDIF
BIOSMEM SEGMENT AT 0040H
;
; COMM CARD BASE ADDRESSES
;
RS232_BASE LABEL WORD ;OFFICIAL IBM TAG
COM1BASE DW ? ;COMM CARD BASE ADDRESSES
COM2BASE DW ?
COM3BASE DW ?
COM4BASE DW ?
;
; PRINTER CARD BASE ADDRESSES
;
PRINTER_BASE LABEL WORD ;OFFICIAL IBM TAG
PRT1BASE DW ? ;PRINTER CARD BASE ADDRESSES
PRT2BASE DW ?
PRT3BASE DW ?
PRT4BASE DW ?
EQPFLAG DW ? ;INSTALLED EQUIPMENT FLAG
MFG_TST DB ?
MEMORY_SIZE DW ? ;MEM SIZE IN K BYTES
MFG_ERR_FLAG DW ? ;SCRATCHPAD FOR MFG ERROR CODES
;
; KEYBOARD DATA AREAS
;
KB_FLAG DB ? ;KEYBOARD FLAG BYTE 1
INS_STATE EQU 80H ; INSERT IS ACTIVE
CAPS_STATE EQU 40H ; CAPS LOCK IS ACTIVE
NUM_STATE EQU 20H ; NUM LOCK IS ACTIVE
SCROLL_STATE EQU 10H ; SCROLL LOCK IS ACTIVE
ALT_SHIFT EQU 08H ; ALT SHIFT IS DEPRESSED
CTL_SHIFT EQU 04H ; CTL SHIFT IS DEPRESSED
LEFT_SHIFT EQU 02H ; LEFT SHIFT KEY IS DEPRESSED
RIGHT_SHIFT EQU 01H ; RIGHT SHIFT KEY IS DEPRESSED
KB_FLAG_1 DB ? ;SECOND KEYBOARD STATUS BYTE
INS_SHIFT EQU 80H ;INSERT KEY IS DEPRESSED
CAPS_SHIFT EQU 40H ;CAPS LOCK KEY IS DEPRESSED
NUM_SHIFT EQU 20H ;NUM LOCK KEY IS DEPRESSED
SCROLL_SHIFT EQU 10H ;SCROLL LOCK KEY IS DEPRESSED
HOLD_STATE EQU 08H ;SUSPEND STATE HAS BEEN TOGGLED
ALT_INPUT DB ? ;STORAGE FOR ALTERNATE KEYPAD ENTRY
BUFFER_HEAD DW ? ;POINTER TO KB BUFFER START
BUFFER_TAIL DW ? ;POINTER TO KB BUFFER END
KB_BUFFER DW 16 DUP (?) ;ROOM FOR 15 ENTRIES
KB_BUFFER_END LABEL WORD
;
; HEAD = TAIL = EMPTY BUFFER
NUM_KEY EQU 69 ;SCAN CODE FOR NUM LOCK KEY
SCROLL_KEY EQU 70 ;SCROLL LOCK KEY
ALT_KEY EQU 56 ;ALT KEY
CTL_KEY EQU 29 ;CONTROL KEY
CAPS_KEY EQU 58 ;CAPS LOCK KEY
LEFT_KEY EQU 42 ;LEFT SHIFT KEY
RIGHT_KEY EQU 54 ;RIGHT SHIFT KEY
INS_KEY EQU 82 ;INSERT KEY
DEL_KEY EQU 83 ;DELETE KEY
;
; DISKETTE DATA AREAS
;
SEEK_STATUS DB ? ;DRIVE RECALIBRATION STATUS
;BIT 3-0 = DRIVE 3-0 NEEDS RECAL BEFORE NEXT
;SEEK IF BIT = 0
INT_FLAG EQU 80H ;INTERRUPT OCCURANCE FLAG
MOTOR_STATUS DB ? ;STATUS OF DRIVE MOTORS
;BIT 3-0 = DRIVE 3-0 MOTOR RUNNING
;BIT 7 = WRITE OPERATION, DELAY REQUIRED
MOTOR_COUNT DB ? ;TIME OUT COUNT FOR DRIVE MOTOR TURN OFF
MOTOR_WAIT EQU 37 ;2 SECOND DELAY (@ 18.2 INTS/SEC)
DISKETTE_STATUS DB ? ;RETURN CODE STATUS BYTE
TIME_OUT EQU 80H ; ATTACHMENT FAILED TO RESPOND
BAD_SEEK EQU 40H ; SEEK OPS FAILED
BAD_NEC EQU 20H ; NEC CONTROLLER FAILED
BAD_CRC EQU 10H ; CRC ERROR ON DISK READ
DMA_BOUNDARY EQU 09H ; ATTEMPT DMA ACROSS 64K BOUNDARY
BAD_DMA EQU 08H ; DMA OVERRUN
RECORD_NOT_FND EQU 04H ; REQUESTED SECTOR NOT FOUND
WRITE_PROTECT EQU 03H ; WRITE ATTEMPT ON PROT DISK
BAD_ADDR_MARK EQU 02H ; ADDRESS MARK NOT FOUND
BAD_CMD EQU 01H ; BAD COMMAND PASSED TO DISKETTE I/O
NEC_STATUS DB 7 DUP (?) ;STATUS BYTES FROM NEC
;
; VIDEO DISPLAY DATA AREA
;
CRT_MODE DB ? ;CURRENT CRT MODE
CRT_COLS DW ? ;# COLUMNS ON CRT
CRT_LEN DW ? ;LENGTH OF REGEN IN BYTES
CRT_START DW ? ;STARTING ADDRESS IN REGEN BUFFER
CURSOR_POSN DW 8 DUP (?) ;CURSOR POSITION FOR EACH OF 8 PAGES
CURSOR_MODE DW ? ;CURRENT CURSOR MODE SETTING
ACTIVE_PAGE DB ? ;CURRENT ACTIVE PAGE
ADDR_6845 DW ? ;I/O ADDRESS BASE FOR DISPLAY CARD
CRT_MODE_SET DB ? ;CURRENT SETTING OF THE 3X8 REGISTER
CRT_PALETTE DB ? ;CURRENT PALETTE SETTING - COLOR CARD
;
; POST DATA AREA
;
IO_ROM_INIT DW ? ;POINTER TO OPTIONAL ROM INIT ROUTINE
IO_ROM_SEG DW ? ;IO ROM SEGMENT
INTR_FLAG DB ? ;FLAG TO INDICATE INTERRUPT OCCURED
;
; TIMER DATA AREA
;
TIMER_LOW DW ? ;LOW WORD OF TIMER COUNT
TIMER_HIGH DW ? ;HI WORD OF TIMER COUNT
TIMER_OFL DB ? ;TIMER HAS OVERFLOWED SINCE LAST READ
;
; SYSTEM DATA AREA
;
BIOS_BREAK DB ? ;BIT 7 = 1 IF BREAK KEY HIT
RESET_FLAG DW ? ;= 1234H IF KB RESET IN PROGRESS
;
; FIXED DISK DATA AREAS
;
DW ?
DW ?
;
; PRINTER AND RS232 TIME OUT VALUES
;
PRINT_TIM_OUT DB 4 DUP (?) ;TIME OUT VALUES FOR EACH PRINTER
RS232_TIM_OUT DB 4 DUP (?) ;TIME OUT VALUES FOR EACH COMM CARD
;
; ADDITIONAL KEYBOARD DATA AREA
;
BUFFER_START DW ?
BUFFER_END DW ?
BIOSMEM ENDS
.LIST
ENDM
;
; END OF MACRO LIBRARY
;
.LIST