• No se han encontrado resultados

Estudio electroquímico

Número de onda (cm -1 )

3.5 Estudio electroquímico

The next five vectors, 820-829/$0334-$033D, are copied from a table at $C065-$C06E in screen editor ROM by the CINT routine [$C07B] during the reset sequence. CINT is also part of RUN/STOP-RESTORE, but a flag in the routine is normally used to skip the vector initialization step in this case. As a re- sult, vector addresses aren't usually changed by RUN/STOP- RESTORE.

820-821 $0334-$0335 CTLVEC

Indirect vector in screen BSOUT handling

The jump through this indirect vector is taken as the first step in the screen BSOUT subroutine [$C7B6] which processes character code values less than 32/$20. At the time the jump is taken, the accumulator holds the current character code. The vector normally holds 51129/$C7B9, the address immediately following the indirect jump. You can change this vector to point to a routine of your own if you wish to change the printing behavior of character codes in the range 0 - 3 1 / $00-$lF. All codes in this range perform cursor movements, color changes, or other control functions rather than printing characters. If you wish to add new control functions, codes 0, 1, 3, 4, 6, 16, 21-23, 25, and 26 are currently unused.

822-823 $0336-$0337 SHFVEC

Indirect vector in screen BSOUT handling

The jump through this indirect vector is taken as the first step in the screen BSOUT subroutine [$C802] which processes character code values greater than 127/$7F. At the time the jump is taken, the accumulator holds the current character code. The vector normally holds 51205/$C805, the address

816-817 $0330-$0331

However you can redirect this vector to a routine of your own if you wish to add commands to the machine language moni-

tor. The following example adds two new monitor com- mands—P, which behaves like D (disassemble) but routes output to the printer, and Q, which closes the file to the printer:

;Redirect vector to new handling routine

0D00 0D02 0D05 OD07 ODOA ODOB ODOD ODOF 0D11 0D14 0D17 0D1A GD1C 0D1E 0D2O 0D21 0D23 0D26 0D28 0D2B 0D2E 0D30 D033 LDA STA LDA STA RTS CMP BNE LDA JSR JSR JMP CMP BNE LDA TAX LDY JSR LDA JSR JSR LDA JSR LDA #$0B $032E #$0D $032F #$51 $OD1A #$04 $FFC3 $FFCC $B08B #$50 $0D3S #$04 #00 $FFBA #$00 $FFBD $FFCO #$04 $FFC9 #$44

;Is character code for Q?

;If so, close logical file 4

;Restore normal I/O channels (CLRCH) ;Retum to monitor main loop

;Is character code for P?

;H so, OPEN 4,4,0

0D35 JMP $B006

;Set logical file 4 for output ;Change monitor command to D (disassemble)

;Return to monitor command processing loop

816-817 $0330-$0331 ILOAD

Indirect vector in Kernal LOAD routine

This indirect vector appears in the Kernal LOAD routine [$F265] at the point after the starting address (in X and Y when the routine is entered) has been stored in 195-196/ $C3-$C4. The accumulator should still contain a value indicat- ing whether the operation is a load or a verify (0/$00 for load, nonzero for verify). The vector normally holds 62060/$F26C, the address immediately following the indirect jump. You can redirect this vector to a routine of your own if you wish to modify the behavior of LOAD.

98

$0336-$0337 822-823

818-819 $0332-$0333 ISAVE

Indirect vector in Kernal SAVE routine

This indirect vector appears in the Kernal SAVE routine [$F53E] at the point after the ending address has been stored in 174-175/$AE-$AF and the starting address has been stored in 193-194/$C1-$C2. The vector normally holds 62798/ $F54E, the address immediately following the indirect jump. You can redirect this vector to a routine of your own if you wish to modify the behavior of SAVE.

Screen Editor Indirect Vectors

The next five vectors, 820-829/$0334-$033D, are copied from a table at $C065-$C06E in screen editor ROM by the CINT routine [$C07B] during the reset sequence. CINT is also part of RUN/STOP-RESTORE, but a flag in the routine is normally used to skip the vector initialization step in this case. As a re- sult, vector addresses aren't usually changed by RUN/STOP- RESTORE.

820-821 $0334-$0335 CTLVEC

Indirect vector in screen BSOUT handling

The jump through this indirect vector is taken as the first step in the screen BSOUT subroutine [$C7B6] which processes character code values less than 32/$20. At the time the jump is taken, the accumulator holds the current character code. The vector normally holds 51129/$C7B9, the address immediately following the indirect jump. You can change this vector to point to a routine of your own if you wish to change the printing behavior of character codes in the range 0 - 3 1 / $00-$lF. All codes in this range perform cursor movements, color changes, or other control functions rather than printing characters. If you wish to add new control functions, codes 0, 1, 3, 4, 6, 16, 21-23, 25, and 26 are currently unused.

822-823 $0336-$0337 SHFVEC

Indirect vector in screen BSOUT handling

The jump through this indirect vector is taken as the first step in the screen BSOUT subroutine [$C802] which processes character code values greater than 127/$7F. At the time the jump is taken, the accumulator holds the current character code. The vector normally holds 51205/$C805, the address

824-825 $0338-$0339

immediately following the indirect jump. You can change this vector to point to a routine of your own if you wish to change the printing behavior of character codes in the range

128-255/$80-$FF. Codes 128-159/$81-$9F perform cursor movements, color changes, or other control functions rather than printing characters. If you wish to add new control func- tions, codes 128, 131, and 132 are currently unused.

824-825 $0338-$0339 ESCVEC

Indirect vector in ESC sequence handling routine

The jump through this indirect vector is taken as the first step in the screen BSOUT subroutine [$C9BE] which processes ESC (escape) key sequences. At the time the jump is taken, a test will have determined that the previous character was ESC (code 27/$lB). The accumulator holds the current character code, the one which followed ESC. The vector normally holds 51649/$C9C1, the address immediately following the indirect jump. You can redirect this vector to add your own ESC se- quences. The following example adds ESC T, which moves the position of the bitmap/text division of a screen line up one row each time the sequence is used:

1400 LDA #$0B ;Redlrect vector to handling routine 1402 STA $0338

1405 LDA #$14 1407 STA $0339 140A RTS

140B CMP #$5E ;Is character t? 140D BEQ $1412

140F JMP $C9C1 ;If not, jump to normal processing routine

1412 LDA $D8 ;Is a split screen in use? 1414 AND #$40

1416 BEQ $140F ;If not, use normal processing routine 1418 LDA $0A34 ;Is the split already at the top row of the

Documento similar