Compare commits
3 Commits
1f7e3b3b4c
...
dcbafc2999
Author | SHA1 | Date |
---|---|---|
Kelvin Sherlock | dcbafc2999 | |
Kelvin Sherlock | 80edada6e9 | |
Kelvin Sherlock | 04113c4725 |
4
vt.equ.S
4
vt.equ.S
|
@ -36,6 +36,7 @@ DECOM ds 2 ; origin
|
|||
DECSCNM ds 2 ; screen mode
|
||||
DECAWM ds 2 ; wrap
|
||||
DECARM ds 2 ; auto repeat
|
||||
DECCOLM ds 2 ; character per line (80/132)
|
||||
|
||||
|
||||
LNM ds 2 ; new line
|
||||
|
@ -46,7 +47,6 @@ SGR ds 2 ; graphics, bit 1 = bold, 4 = underscore, 5 = blink, 7 = inverse
|
|||
*CHARSET ds 2 ;
|
||||
*GRAPHICS ds 2 ;
|
||||
|
||||
*DECCOLM ds 2 ; character per line (80/132)
|
||||
*DECINLM ds 2 ; interlace
|
||||
*DECSCLM ds 2 ; scroll mode
|
||||
|
||||
|
@ -93,6 +93,8 @@ read_q_tail ds 2
|
|||
write_q_head ds 2
|
||||
write_q_tail ds 2
|
||||
|
||||
master_id ds 2
|
||||
|
||||
do *>256
|
||||
err "too big"
|
||||
fin
|
||||
|
|
36
vt100.cda.S
36
vt100.cda.S
|
@ -37,8 +37,20 @@ ptr ds 2
|
|||
init_cda ent
|
||||
php
|
||||
rep #$30
|
||||
|
||||
*
|
||||
* rom 1 IIgs InstallCDA clobbers $3c-$43 on the direct page
|
||||
*
|
||||
|
||||
phd
|
||||
pea #0
|
||||
pld
|
||||
|
||||
psl #handle
|
||||
_InstallCDA
|
||||
|
||||
pld
|
||||
|
||||
plp
|
||||
rts
|
||||
|
||||
|
@ -272,6 +284,7 @@ variables
|
|||
jsr decawm
|
||||
jsr decarm
|
||||
jsr decscnm
|
||||
jsr deccolm
|
||||
jsr lnm
|
||||
jsr sgr
|
||||
jsr dectm
|
||||
|
@ -372,11 +385,22 @@ decscnm
|
|||
:str asc "DECSCNM: ",00
|
||||
|
||||
|
||||
lnm
|
||||
deccolm
|
||||
mx %10
|
||||
ldy #line_12+4
|
||||
ldx #:str
|
||||
jsr print_xy_str
|
||||
lda DPAGE+DECCOLM
|
||||
jmp print_on_off
|
||||
|
||||
:str asc "DECCOLM: ",00
|
||||
|
||||
|
||||
lnm
|
||||
mx %10
|
||||
ldy #line_13+4
|
||||
ldx #:str
|
||||
jsr print_xy_str
|
||||
lda DPAGE+LNM
|
||||
jmp print_on_off
|
||||
|
||||
|
@ -385,7 +409,7 @@ lnm
|
|||
|
||||
sgr
|
||||
mx %10
|
||||
ldy #line_13+4
|
||||
ldy #line_14+4
|
||||
ldx #:str
|
||||
jsr print_xy_str
|
||||
lda DPAGE+SGR
|
||||
|
@ -396,7 +420,7 @@ sgr
|
|||
|
||||
dectm
|
||||
mx %10
|
||||
ldy #line_14+4
|
||||
ldy #line_15+4
|
||||
ldx #:str
|
||||
jsr print_xy_str
|
||||
lda DPAGE+DECTM
|
||||
|
@ -407,7 +431,7 @@ dectm
|
|||
|
||||
decbm
|
||||
mx %10
|
||||
ldy #line_15+4
|
||||
ldy #line_16+4
|
||||
ldx #:str
|
||||
jsr print_xy_str
|
||||
lda DPAGE+DECBM
|
||||
|
@ -419,7 +443,7 @@ decbm
|
|||
|
||||
decx
|
||||
mx %10
|
||||
ldy #line_16+4
|
||||
ldy #line_17+4
|
||||
ldx #:str
|
||||
jsr print_xy_str
|
||||
lda DPAGE+x
|
||||
|
@ -431,7 +455,7 @@ decx
|
|||
|
||||
decy
|
||||
mx %10
|
||||
ldy #line_17+4
|
||||
ldy #line_18+4
|
||||
ldx #:str
|
||||
jsr print_xy_str
|
||||
lda DPAGE+y
|
||||
|
|
31
vt100.csi.S
31
vt100.csi.S
|
@ -354,7 +354,7 @@ mode_common
|
|||
dw :rts ; error
|
||||
dw mode_DECCKM
|
||||
dw mode_DECANM
|
||||
dw :rts ; DECCOLM
|
||||
dw mode_DECCOLM ; DECCOLM
|
||||
dw :rts ; DECSCLM
|
||||
dw mode_DECSCNM
|
||||
dw mode_DECOM
|
||||
|
@ -396,10 +396,33 @@ mode_DECANM
|
|||
:rts rts
|
||||
|
||||
|
||||
*mode_DECCOLM
|
||||
* sty DECCOLM
|
||||
* rts
|
||||
mode_DECCOLM
|
||||
* 80/132 mode.
|
||||
* vt102 guide states:
|
||||
* NOTE: When you change the number of columns per line, the screen is erased.
|
||||
* This also sets the scrolling region for full screen (24 lines).
|
||||
*
|
||||
* based on testing, this always clears the screen and resets x/y, regardless of current mode.
|
||||
*
|
||||
|
||||
bit pmod
|
||||
bpl :rts
|
||||
|
||||
sty DECCOLM
|
||||
|
||||
lda #0
|
||||
sta DECTM
|
||||
lda #23
|
||||
sta DECBM
|
||||
stz x
|
||||
stz y
|
||||
|
||||
phy
|
||||
jsr recalc_cursor
|
||||
jsr erase_screen_2
|
||||
ply
|
||||
|
||||
:rts rts
|
||||
|
||||
mode_DECSCNM
|
||||
bit pmod
|
||||
|
|
|
@ -60,6 +60,9 @@ keypress ent
|
|||
sta KEYSTROBE
|
||||
|
||||
* if DECARM is clear, skip repeat characters.
|
||||
*
|
||||
* a REAL vt100 will never auto-repeat ESC, TAB, RETURN, or if Control is also pressed.
|
||||
*
|
||||
bit DECARM
|
||||
bpl :arm
|
||||
bit #kmRepeat
|
||||
|
|
59
vt100.main.S
59
vt100.main.S
|
@ -4,6 +4,8 @@
|
|||
xc
|
||||
xc
|
||||
|
||||
tbx on ; qasm
|
||||
|
||||
mx %11
|
||||
use vt.equ
|
||||
use apple2gs.equ
|
||||
|
@ -62,6 +64,9 @@ init
|
|||
sta SETALTCHAR
|
||||
rep #$30
|
||||
|
||||
jsr init_mem
|
||||
|
||||
|
||||
ldx #254
|
||||
:zloop stz 0,x
|
||||
dex
|
||||
|
@ -120,6 +125,60 @@ init
|
|||
jsr init_cda
|
||||
rts
|
||||
|
||||
init_mem
|
||||
*
|
||||
* see prodos technote #27
|
||||
*
|
||||
* _InstallCDA uses the memory manager ; otherwise I wouldn't bother
|
||||
* This is here to prevent MM from stomping on our memory.
|
||||
*
|
||||
|
||||
mx %00
|
||||
|
||||
stz master_id
|
||||
_TLStartUp
|
||||
pha
|
||||
_MMStartUp
|
||||
pla
|
||||
bcs :p8
|
||||
rts
|
||||
:p8
|
||||
_MTStartUp
|
||||
pea #0
|
||||
pea #$1000
|
||||
_GetNewID
|
||||
pla
|
||||
sta master_id
|
||||
|
||||
* bank 0
|
||||
pha
|
||||
pha
|
||||
pea #$0000
|
||||
pea #$b800
|
||||
pei master_id
|
||||
pea #$c013
|
||||
pea #0000
|
||||
pea #0800
|
||||
_NewHandle
|
||||
pla
|
||||
pla
|
||||
|
||||
* bank 1
|
||||
pha
|
||||
pha
|
||||
pea #$0000
|
||||
pea #$b800
|
||||
pei master_id
|
||||
pea #$c013
|
||||
pea #$0001
|
||||
pea #$0800
|
||||
_NewHandle
|
||||
pla
|
||||
pla
|
||||
|
||||
rts
|
||||
|
||||
|
||||
reset ent
|
||||
mx %11
|
||||
php
|
||||
|
|
Loading…
Reference in New Issue