mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-24 08:54:17 +00:00
Upload
Digital Research
This commit is contained in:
105
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/CPM 2.2 SOURCE/ED20PAT.ASM
Normal file
105
CPM OPERATING SYSTEMS/CPM 2.X/CPM 2.2/CPM 2.2 SOURCE/ED20PAT.ASM
Normal file
@@ -0,0 +1,105 @@
|
||||
; assembly language version of mem$move for ed speedup
|
||||
; version 2.0 of ED
|
||||
;
|
||||
mem$move equ 13cah
|
||||
moveflag equ 1d34h
|
||||
direction equ 1d20h
|
||||
front equ 1d22h
|
||||
back equ 1d24h
|
||||
first equ 1d26h
|
||||
last equ 1d28h
|
||||
baseline equ 1c10h
|
||||
memory equ 1d4dh
|
||||
;
|
||||
forward equ 1
|
||||
lf equ 0ah
|
||||
;
|
||||
org mem$move
|
||||
lxi h,moveflag
|
||||
mov m,c ;1 = move data
|
||||
lxi d,memory
|
||||
lhld front
|
||||
dad d ;memory+front
|
||||
push h
|
||||
lhld back
|
||||
dad d
|
||||
push h
|
||||
lda direction
|
||||
cpi forward
|
||||
jnz moveback
|
||||
lhld last
|
||||
mov a,c ;moveflag to a
|
||||
rar
|
||||
jc moveforw
|
||||
; set back to last
|
||||
shld back
|
||||
pop h
|
||||
pop h
|
||||
ret
|
||||
;
|
||||
moveforw:
|
||||
dad d ;memory+last
|
||||
mov b,h
|
||||
mov c,l
|
||||
pop h
|
||||
pop d ;bc=last, de=front, hl=back
|
||||
movef: mov a,l ;back < last?
|
||||
sub c
|
||||
mov a,h
|
||||
sbb b ;cy if true
|
||||
jnc emove
|
||||
inx h ;back=back+1
|
||||
mov a,m ;char to a
|
||||
cpi lf ;end of line?
|
||||
jnz notlff
|
||||
push h
|
||||
lhld baseline
|
||||
inx h ;baseline=baseline+1
|
||||
shld baseline
|
||||
pop h
|
||||
notlff:
|
||||
stax d ;to front
|
||||
inx d ;front=front+1
|
||||
jmp movef
|
||||
|
||||
moveback:
|
||||
lhld first
|
||||
dad d ;memory+first
|
||||
mov b,h
|
||||
mov c,l
|
||||
pop h
|
||||
pop d ;bc=first, de=front, hl=last
|
||||
moveb: mov a,c ;first > front?
|
||||
sub e
|
||||
mov a,b
|
||||
sbb d ;cy if true
|
||||
jnc emove
|
||||
dcx d ;front=front-1
|
||||
ldax d ;char to a
|
||||
cpi lf
|
||||
jnz notlfb
|
||||
push h
|
||||
lhld baseline
|
||||
dcx h ;baseline=baseline-1
|
||||
shld baseline
|
||||
pop h
|
||||
notlfb: push psw ;save char
|
||||
lda moveflag
|
||||
rar
|
||||
jnc nomove
|
||||
pop psw
|
||||
mov m,a ;store to back
|
||||
dcx h
|
||||
jmp moveb
|
||||
nomove: pop psw
|
||||
jmp moveb
|
||||
;
|
||||
emove: push d
|
||||
lxi d,-memory
|
||||
dad d ;relative value of back
|
||||
shld back
|
||||
pop h
|
||||
dad d ;relative value of front
|
||||
shld front
|
||||
ret
|
||||
end
|
||||
Reference in New Issue
Block a user