[an error occurred while processing this directive]
|
А локация 60h это что? Если начальный адрес всей таблицы векторов, то не годится. Если смещение в таблице, а такое смещение соответств. INT3, то вполне.
Примерно так.
Ну и где-то в основной программе должны быть в нужное место мапированы вектора, смотрите описание PMST. А нужное место - 0xXY80 из CMD файла. XY любые, с учетом процессора, конечно. Вместо 80 в конце м.б. 0. Выравнивание по 0x80 должно быть, короче.
Регистр маски само собой должен быть надлежащим образом установлен,
INTM сброшен.
.CMD FILEMEMORY
{
PAGE 0:
....
VECT: origin = 0xXY80 length = 0x80 /* vectors, aligned at 0x80 * /
....
PAGE 1:
....
}SECTIONS
{
...
.vectors : > VECT PAGE 0
...
}..............................
vector.asm
.include ...
.sect ".vectors"
.mmregs
.ref _isrfunc ;
.align 0x80 ; must be aligned on page boundaryresvec: RETE ;0
NOP
NOP
NOP
nmivec: RETE ; 4, NMI
NOP
NOP
NOP
sint17: RETE ;8
NOP
NOP
NOP
.............
int3: BD _isrfunc ;60
PSHM STO
PSHM ST1
................
.end
isrfunc.asm
.include ...
.global _isrfunc
_isrfunc:PSHM ... ;if required
.....
POPM ...
POPM ST1
POPM ST0
RETI
.........
.end
E-mail: info@telesys.ru