home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
simtel
/
sigm
/
vols000
/
vol053
/
plot.asm
< prev
next >
Wrap
Assembly Source File
|
1984-04-29
|
15KB
|
1,197 lines
.RADIX 8
.PABS
.XLINK
.XSYM
.SALL
CONFIG= \"Config <0/zh,3/cpml,5/trs,6/tpm>?- "
;
.IFE CONFIG,[
CALCOM=1
TRS80=0
PLT76= PLTLOC
DISCRN= ^H0EC00
;
PARAM= ^H400
$COM= ^H100
Z80=1
RSTINT=0
BEGIN= ^H8000
PRINIT= BEGIN+^D12
;
CHLT= 177
DISLOC= ^H0FC00
DISCLR= DISLOC+3*3]
;
.IFE CONFIG-3,[
CALCOM=1
TRS80=0
PLT76= ^H3000
DISCRN= ^H0EC00
;
PARAM= ^H3400
$COM= ^H100
Z80=1
RSTINT=0
BEGIN= ^H1000
PRINIT= BEGIN+^D12
;
CHLT= 177
DISLOC= ^H0FC00
DISCLR= DISLOC+3*3]
;
.IFE CONFIG-5,[
CALCOM=0
TRS80=1
PLT76= ^H4D00
DISCRN= ^H3C00
;
PARAM= ^H7100
$COM= ^H4200
Z80=1
RSTINT=1
BEGIN= ^H5100
PRINIT= BEGIN+^D12
CHLT= 377
;
TRSIOT=^H4500
DISCLR= TRSIOT+3*^D7]
;
COMMON= 1
;
;****** boiler plate starts *******
.XLIST
$$SAE= ^D1
$$SAS= ^D2
$$SWA= ^D3
$$SRB= ^D4
$$SER= ^D5
$$SLK= ^D6
$$RXQ= ^D7
$$SGT= ^D8
$$SXX= ^D9
$$RQQ= ^D10
$$SNQ= ^D11
$$SRA= ^D12
$$RVA= ^D13
$$SHK= ^D14
$$SPK= ^D15
$$SLF= ^D16
$$RNA= ^D17
$$RNH= ^D18
$$SAT= ^D19
$$SFA= ^D20
$$SDS= ^D21
$$SDD= ^D22
$$SWS= ^D23
$$SAN= ^D24
$$SFS= ^D25
$$SGV= ^D26
$$SSB= ^D27
$$SPA= ^D28
$$SRQ= ^D29
$$SPL= ^D30
$$RAC= ^D31
$$RAD= ^D32
$$RAY= ^D33
$$RAZ= ^D34
$$STO= ^D35
$$STI= ^D36
$$STL= ^D37
$$SPR= ^D38
$$SHR= ^D39
$$SGQ= ^D40
$$SXB= ^D41
$$SXC= ^D42
$$SUP= ^D43
$$SMN= ^D44
$$SDV= ^D45
$$SUB= ^D46
$$SPO= ^D47
$$SRI= ^D48
$$SXL= ^D49
$$SLD= ^D50
;[DEUQ]
;
.SYN RC,JRQC
.SYN RZ,JRQZ
.SYN RNC,JRQNC
.SYN RNZ,JRQNZ
.SYN RM,JRQM
;
;
;[DEUM]
;
.DEFINE LINKJ[ADR]=
[ JMP $COM+3*ADR]
;
.DEFINE LINKC[ADR]=
[ CALL $COM+3*ADR]
;
.DEFINE SKIP1=
[ .BYTE 376]
.DEFINE .T[A,B,C,ADR]=
[.WORD ((B&7)<15)+((C&37)<10)+((A&37)<2)+((B&30)>3)
.IFNDEF ADR,[
.WORD 0]
.IFDEF ADR,[
.WORD ADR]
]
.DEFINE MTAB[TAB]=
[ LXI H,TAB]
.DEFINE TTAB[M1,M2,ADR]=
[ .BYTE (M1 & N137)
.BYTE (M2 & N137)
.WORD ADR]
.DEFINE DINX[REG]=
[ INX REG
INX REG]
.DEFINE DDCX[REG]=
[ DCX REG
DCX REG]
.DEFINE JCLA=
[ XRA A]
.DEFINE DSUB[SBT]=
[ XCHG
LHLD SBT
CALL MSUB]
.DEFINE TSTA=
[ ORA A]
.DEFINE MJST2[PTR]=
[ LHLD PTR+2
XCHG
LHLD PTR
CALL MST2]
.DEFINE MBTEST[TEMP]=
[ LDA TEMP
TSTA]
.DEFINE MMOVE[PTR]=
[ LHLD PTR+2
XCHG
LHLD PTR]
.DEFINE SKIP2[REG]=
[.BYTE 001!(((REG)&6)<3)]
;
.DEFINE MJSSR[TO,FRM,FRME]=;def
[ LHLD FRM
MOV B,H
MOV C,L
LHLD TO
XCHG
LHLD FRME
CALL MSHR
SHLD FRME]
;
;
;[DEUZ1]
;
.SYN RET,JRQ
.IFE Z80,[
.SYN JMP,.JMPR
.SYN JNC,.JRNC
.SYN JC,.JRC
.SYN JNZ,.JRNZ
.SYN JZ,.JRZ
;
.DEFINE MJSSA[FROM,TO,LNGTH]=
[ LXI B,LNGTH
LXI H,FROM
LXI D,TO
;
CALL MSSA]
.DEFINE .DJNZ[ADR]=
[ DCR B
JNZ ADR]
;
.DEFINE MDSBCD=
[ MOV A,L
SUB E
MOV L,A
MOV A,H
SBB D
MOV H,A]
]
;
;
.IFG Z80,[
.SYN JMPR,.JMPR
.SYN JRNC,.JRNC
.SYN JRC,.JRC
.SYN JRNZ,.JRNZ
.SYN JRZ,.JRZ
;
.DEFINE MJSSA[FROM,TO,LNGTH]=
[ LXI B,LNGTH
LXI H,FROM
LXI D,TO
LDIR]
.DEFINE .DJNZ[ADR]=
[ DJNZ ADR]
.DEFINE MDSBCD=
[ JCLA
DSBC D]
]
;
;
P=PARAM
VAR1= P+14
BOOT= P+15
MSCI= P+17
MSRI= P+22
MSCO= P+25
MSPO= P+30
MSLO= P+33
mscsts= P+36
MSCHK= P+41
MSSET= P+44
MSMCK= P+47
MSBDOS= P+52
PSEsym= P+55
PUIsym= P+57
PUOsym= P+61
PULsym= P+63
TAMsym= P+65
POAsym= P+67
POBsym= P+71
POCsym= P+73
PODsym= P+75
PSWsym= P+77
PSYsym= P+101
PWAsym= P+103
tr= P+105
te= P+106
RIX= P+107
BIX= P+110
MCH= P+111
TCE= P+112
CE= P+114
INPsym= P+116
OUTsym= P+120
SPRW3= P+122
LDRCNL= P+123
LDRCNH= P+124
RUBOT= P+125
RUBO1= P+126
RUBO2= P+127
NULCH= P+130
NULCT= P+131
PLIN= P+132
KYN1= P+133
KYN2= P+134
CWSAF= P+135
CWSNF= P+136
CWSEF= P+137
CWSPF= P+140
CWMBF= P+141
CWMAF= P+142
CWMNF= P+143
CWCAS= P+144
CWCQC= P+145
CWUNP= P+146
CWBP1= P+147
CWEP1= P+150
CWBP2= P+151
CWEP2= P+152
CWBMF= P+153
CWEMF= P+154
ENDWC= P+155
FUTUR0= P+156
FUTUR1= P+157
SYN= P+161
CPCM= P+167
SYN1= P+171
SYNR= P+173
SYNR1= P+175
CPRP= P+177
SCEK= P+204
S1= P+211
S2= P+212
S3= P+213
DSYS1= P+215
DSYS2= P+217
DSYS3= P+221
DSYS4= P+223
DEXT= P+225
JMP1TS= P+230
JMP2TS= P+231
TAEsym= P+232
TAHsym= P+234
TALsym= P+236
PWR= P+240
PAE= P+242
PEL= P+244
PFL= P+246
ZERO= P+250
EXFLG= P+251
PG1= P+252
PG1A= P+253
PG2= P+254
PG2A= P+255
BASE= P+256
LT= P+257
CH= P+261
PFI= P+262
PFF= P+264
PFN= P+266
PFT= P+270
T1= P+272
T2= P+274
T3= P+276
PAL2= P+300
PAN2= P+302
PAL= P+304
PAN= P+306
PALPL= P+310
PANPN= P+312
T4= P+314
T5= P+316
T6= P+320
T7= P+322
T8= P+324
T9= P+326
ADS32= P+330
ADS33= P+332
RAND= P+334
CHA1= P+336
CHA2= P+340
PAL21= P+342
SMSW= P+344
NULF= P+345
PNF= P+346
PNFI= P+347
ARG1= P+350
ARG2= P+352
ARG3= P+354
TM1= P+356
MOQOV= P+357
PCNT= P+362
ZCNT= P+363
IOBYT= P+421
SAMBYT= P+422
KTRAK= P+423
DISK1= P+425
DISK2= P+427
DISK3= P+431
DISK4= P+433
DISK5= P+435
DISK6= P+437
DISK7= P+441
CALDA= P+443
SAMJM1= P+446
JMP1AD= P+447
QWSD0= P+451
PLTNX= P+454
PLTNY= P+456
PLTQD= P+460
PLTPN= P+462
PLTCM= P+463
PLTSX= P+464
PLTSY= P+465
PLTWL= P+466
PLTWR= P+470
PLTVM= P+472
TM2= P+473
TC3= P+475
TCECT= P+477
TCEAN= P+501
SERFLG= P+502
PKFLG= P+503
RSTHLD= P+504
USER1= P+513
USER1A= P+514
USER2= P+515
USER2A= P+516
USER3= P+517
USER3A= P+520
USER4= P+521
USER4A= P+522
REGSAV= P+523
;[CONSTANTS]
;
N10=10
N11=11
N12=12
N13=13
N14=14
N15=15
N16=16
N17=17
N20=20
N21=21
N24=24
N30=30
N34=34
N37=37
N40=40
N50=50
N51=51
N60=60
N70=70
N74=74
N76=76
N77=77
N100=100
N110=110
N137=137
N144=144
N133=133
N135=135
N177=177
N200=200
N202=202
N277=277
N300=300
N340=340
N34=34
N377=377
N1K=1000
N1750=1750
N10K=10000
N100K=100000
N2342=23420
;
K400K=200
K500K=240
K600K=300
K700K=340
;
KABM= K600K<N10
KABN= K700K<N10
KABF= K400K<N10
KACM= K500K<N10
;
N400=400
N47=47
;
KCRLF=4215
;
;[DEU2]
;
.IFE RSTINT,[
.DEFINE JSLK=
[ RST 6]
.DEFINE JSER=
[ RST 5]
.DEFINE JSWA=
[ RST 3]
.DEFINE JSAS=
[ RST 2]
.DEFINE JSRB=
[ RST 4]
.DEFINE JSAE=
[ RST 1]
]
;
.IFG RSTINT,[
.DEFINE JSAE=
[ CALL MSAE]
.DEFINE JSAS=
[ CALL MSAS]
.DEFINE JSWA=
[ CALL MSWA]
.DEFINE JSRB=
[ CALL MSRB]
.DEFINE JSER=
[ CALL MSER]
.DEFINE JSLK=
[ CALL MSLK]
]
;
;
;
.IFDEF COMMON,[
MSAE= $COM+3*$$SAE
MSAS= $COM+3*$$SAS
MSWA= $COM+3*$$SWA
MSRB= $COM+3*$$SRB
MSER= $COM+3*$$SER
MSLK= $COM+3*$$SLK
]
;
;
.LIST
;******** boiler plate ends *******
.TITLE /PLOT76/
;
.LOC POCsym+PRINIT-VAR1
;
.WORD PLT76
;
.LOC PLT76
;[$PLT]
;
OUTPL=USER1
STSPL=USER1A
MSKPL=USER2
;
PLTTAB:
.T "P","L","T",PLTQQ; Plotter
;
PMSCRN: .WORD DISCRN
;
PLTQQ: .BYTE (PLTQE - PLTQB) / 4
PLTQB:
.T "P","L"," ",$174; Plot
.T "W","I"," ",$175; Write Initialize
.T "W","L"," ",$179; Width Left
.T "W","R"," ",$178; Width Right
.T "W","S"," ",$180; Write Straight line
.T "W","X"," ",$176; Write "X" axis total
.T "W","Y"," ",$177; Write "Y" axis total
PLTQE:
QPLLQ: .BYTE (QPLLE - QPLLB) / 4
QPLLB:
.T "A","B","S",QPLAD; Absolute Display
.IFG CALCOM,[
.T "A","S"," ",QPLAS; Assign Ports & Mask
.T "C","A","L",QPLCAL; Calcomp Plotter]
.IFE TRS80-1,[
.T "C","W","C",$250; Change Warning Character]
.T "L","F"," ",QPLLF; List Functions
.T "M","Q"," ",QPLMQ; Modify Quadrant
.T "N","M"," ",QPLNM; Null Mode - OUTPUT
.IFE TRS80-1,[
.T "T","R","S",QPLTRS; TRS80 Display]
.IFE TRS80,[
.T "P","O","L",QPLPOL; Polymorphic Display]
.T "V","M"," ",QPLVM; Value Mode
QPLLE:
PLTQ0: .BYTE "D","H","A","B"
.BYTE "E","I","F","J"
;
.BYTE "B","A","D","H"
.BYTE "F","E","J","I"
;
.BYTE "H","D","B","A"
.BYTE "J","F","I","E"
;
.BYTE "A","B","H","D"
.BYTE "I","J","E","F"
;
.BYTE "D","H","B","A"
.BYTE "F","J","E","I"
;
.BYTE "A","B","D","H"
.BYTE "E","F","I","J"
;
.BYTE "H","D","A","B"
.BYTE "I","E","J","F"
;
.BYTE "B","A","H","D"
.BYTE "J","I","F","E"
;
;
; -Y+X,+Y-X,-Y-X,+Y+X,+Y,+X,-Y,-X
; DUPR,DDPL,DUPL,DDPR,DD,DR,DU,PL
; "I","F","J","E","D","A","H","B"
;
PLTINI: LXI H,JMP1TS
MOV A,M
RRC
RC
INR M
;
JCLA
LXI H,PLTNX
MVI B,^D18
PLTIN1: MOV M,A
INX H
.DJNZ PLTIN1
;
LXI H,PLTQ0
SHLD PLTQD
LHLD $COM + 1 + 3 * $$SWA
SHLD JMP1AD
MVI A,303
STA SAMJM1
;
QPLTRS:
QPLPOL: LXI H,POLPLT
;
QPLN0: STA PLTVM
SHLD JMP1AD
jrq;ret
;
QPLVM: INR A
LHLD $COM + 1 + 3 * $$SWA
.JMPR QPLN0
;
QPLNM: LHLD $COM + 1 + 3 * $$STO
.JMPR QPLN0
;
;[$174/PL]
;
$174: CALL PLTINI
LINKC $$SAE
RC
MTAB QPLLQ
LINKC $$SPK
RC
PCHL
;
QPLLF: MTAB QPLLQ
LINKJ $$SLF
;
.IFG CALCOM,[
QPLCAL: LXI H,CALOUT ; Calcomp
.JMPR QPLN0
;
QPLAS: LINKC $$SXX
STA OUTPL ; Output port
LINKC $$SXX
STA STSPL ; Status port
LINKC $$SXX
STA MSKPL ; Status mask
jrq;ret]
;
;
;[$175/WI]
$175: CALL MSGM
$175A: SHLD PLTNX
CALL MSGM
SHLD PLTNY
RET
;
;[$176/WX]
$176: LHLD PLTNX
.JMPR MSLN
;
;
;[$177/WY]
$177: LHLD PLTNY
;
MSLN: JSER
MOV B,H
MOV C,L
MOV A,H
ORA A
MVI A,0
JP MSLM1
CALL MSCIH
MVI A,1
MSLM1: STA T7
LINKC $$SWS
LINKJ $$RVA
;
;
;[$178/WR]
$178: LHLD PLTWR
.JMPR MSLN
;
;[$179/WL]
$179: LHLD PLTWL
.JMPR MSLN
QWS1A: MVI A,1
SKIP1
QWS1I: JCLA
STA PLTCM
.JMPR QWS2
;
;
QWS1Q: CALL QPLMQ
.JMPR QWS1S0
;
QWS1S: LHLD T5
MOV A,L
STA PLTSX
CALL MSGM
MOV A,C
STA PLTSY
.JMPR QWS1S0
;
QWS1W: LHLD T5
SHLD PLTWL
CALL MSGM
XCHG
SHLD PLTWR
.JMPR QWS1S0
;
QWS1C: LHLD T8
CALL $175A
MOV A,L
CMA
STA YABS
LDA PLTNX
CMA
STA XABS
CALL DISCLR
QWS1S0: .JMPR QWS0
;
QWS1U: MVI A,1
STA T2
;
QWS2: LHLD T3
DCX H
DCX H
SHLD T3
MOV A,M
ORA A
JM QWS3
INX H
MOV A,M
CPI "U"
.JRZ QWS1U
CPI "I"
.JRZ QWS1I
CPI "Q"
.JRZ QWS1Q
CPI "S"
.JRZ QWS1S
CPI "W"
.JRZ QWS1W
CPI "C"
.JRZ QWS1C
CPI "A"
.JRZ QWS1A
.JMPR QWS2
;
;[$180/WS]
;
$180: CALL PLTINI
;
QWSA: LDA PLTVM
TSTA
.JRZ QWS0
JSER
;
QWS0: LINKC $$SAE
RC
CALL MSGM
SHLD T8
MOV H,B
MOV L,C
SHLD T5
LDA T7
ORA A
.JRZ QWS0A
INR A
QWS0A: STA ARG1
XRA A
STA T2
LHLD PAL
SHLD T3
.JMPR QWS2
;
QWS4: INR M
.JRNZ QWS5
MVI C,"`"
.JMPR QWS6
QWS5: MVI M,-1
MVI C,"P"
QWS6: CALL SAMJM1
.JMPR QWS1
QWS3: LXI H,PLTPN
LDA T2
ADD M
.JRZ QWS4
QWS1: CALL MSGM
SHLD T9
MOV H,B
MOV L,C
SHLD T6
LDA PLTCM
ORA A
JNZ WSABS
CALL MSSCX
CALL MSSCY
;
;BRANCH HERE FOR INCREMENTAL OR DISPLAY
;
;INCREMENTAL
;
QWSP0: LDA T7
ORA A
.JRZ QWSP1
LXI H,ARG1
INR M
QWSP1: LHLD T5
XCHG
LHLD T6
MOV A,E
SUB L
MOV A,D
SBB H
.JRC QWSP2
LDA ARG1
ORA A
RAR
ADI 2
QWSP6: LHLD PLTQD
PUSH H
MOV C,A
MVI B,0
DAD B
MOV A,M
STA ADS32
POP H
LDA ARG1
ADI 4
MOV C,A
DAD B
MOV A,M
STA ADS33
LHLD T5
PUSH H
MOV A,H
RAR
MOV H,A
MOV A,L
RAR
MOV L,A
SHLD ARG2
POP H
CALL MSCIH
DCX H
SHLD ARG1
.JMPR QWSP3
;
QWSP2: SHLD T5
XCHG
SHLD T6
LDA ARG1
ANI 1
.JMPR QWSP6
;
QWSP4: LDA ADS32
QWSP5: MOV C,A
CALL SAMJM1;OUTPUT
LINKC $$SHK
;
QWSP3: LHLD ARG1
INX H
SHLD ARG1
MOV A,H
ORA L
JZ QWS0
;
LHLD T6
XCHG
LHLD ARG2
DAD D
SHLD ARG2
XCHG
LHLD T5
MOV A,D
SUB H
MOV A,E
SBB L
.JRC QWSP4
;
CALL MSCIH
XCHG
LHLD ARG2
DAD D
SHLD ARG2
LDA ADS33
.JMPR QWSP5
;
WSABS: LHLD PLTNX
CALL MSCIH
XCHG
LHLD T8
DAD D
SHLD PLTNX
MOV A,H
ORA A
MVI B,2
JP SABS0
CALL MSCIH
MVI B,0
SABS0: SHLD T5
INR B
LHLD PLTNY
CALL MSCIH
XCHG
LHLD T9
DAD D
SHLD PLTNY
MOV A,H
ORA A
JP SABS1
CALL MSCIH
DCR B
SABS1: SHLD T6
MOV A,B
STA ARG1
JMP QWSP1
;
;
MSGM: ;JSBD
LINKC $$SGT
LDA T7
ORA A
RZ
CALL MSCIH
RET
;
;
MSCIB: MOV A,B
CMA
MOV B,A
MOV A,C
CMA
MOV C,A
INX B
RET
MSCIH: MOV A,H
CMA
MOV H,A
MOV A,L
CMA
MOV L,A
INX H
RET
;
QPLMQ: LINKC $$SGT
MOV A,B
ORA A
RNZ
MOV A,C
CPI N10
RNC
RAL
RAL
RAL
MOV C,A
LXI H,PLTQ0
DAD B
SHLD PLTQD
RET
;
;
MSSCX: LHLD T8
LDA PLTSX
ORA A
.JRZ SSCX1
SSCX0: DCR A
.JRZ SSCX1
DAD H
.JMPR SSCX0
SSCX1: CALL MSCIH
XCHG
LHLD PLTNX
DAD D
SHLD PLTNX
RET
;
MSSCY: LHLD T9
LDA PLTSY
ORA A
.JRZ SSCY1
SSCY0: DCR A
.JRZ SSCY1
DAD H
.JMPR SSCY0
SSCY1: CALL MSCIH
XCHG
LHLD PLTNY
DAD D
SHLD PLTNY
RET
;
;[DISPLAY CONSTANTS]
.IFE TRS80-1,[
KPMP1= ^H2001
KPMP2= ^H8
KPMP4= 2]
;
.IFE TRS80,[
KPMP1= ^H0101
KPMP2= 2
KPMP4= 4]
;
;[POLPLT]
;
;Polymorphic display mode
;
XABS= USER4
YABS= USER4A
XPOS= T1
YPOS= T2
PMPEN= QWSD0
PMSEND= 0
PMLINL= ^D64
PMLINH= ^D16
;
;
POLPLT: MOV A,C
ANI 60
.JRZ PMPLT
;
SUI 20
STA PMPEN
;
;
PMPLT: MOV A,C
ANI 17
LXI H,XABS
RAR
.JRNC PMPLTA
INR M
PMPLTA: RAR
.JRNC PMPLTB
DCR M
PMPLTB: LXI H,YABS
RAR
.JRNC PMPLTC
INR M
PMPLTC: RAR
.JRNC PMPLTD
DCR M
;
PMPLTD: LDA PMPEN
TSTA
RNZ ; test for pen
;
;
PMPLT2: LDA YABS
LXI B,KPMP1
ANI 3
CPI 3
.JRZ PMPLT4
DCR C
TSTA
.JRZ PMPLT4
MVI B,KPMP2
DCR A
.JRZ PMPLT4
MVI B,KPMP4
PMPLT4: PUSH B; dot code 1/2/4 or 20/8/2
LDA YABS
RRC
RRC
ADD C
ANI 17
MOV B,A
MVI A,20
SUB B ; origin bottom of screen
STA YPOS
;
LDA XABS
ANI 1
.JRNZ PMPLT3
POP PSW
.IFE TRS80,[
RLC
RLC
RLC]
.IFE TRS80-1,[
RAR]
PUSH PSW
PMPLT3: LDA XABS
RRC
ANI 177
STA XPOS
;
LDA YPOS
PUSH PSW
RRC
RRC
ANI 3
MOV B,A
POP PSW
ANI 3
RRC
RRC
MOV C,A ; Y is now in BC
;
LDA XPOS
ADD C
MOV C,A ; X,Y are in BC
;
LHLD PMSCRN
DAD B
;
MOV A,M
RAL
.IFE TRS80,[
.JRNC PMPLT7]
.IFE TRS80-1,[
.JRC PMPLT7]
MVI M,CHLT ; was not dots
PMPLT7: LDA PNF ; test for neutral
TSTA
MOV A,M ; old bits
POP B
.IFE TRS80,[
.JRNZ PMPLT9]
.IFE TRS80-1,[
.JRZ PMPLT9]
CMA
ORA B ; combine new bits
CMA
SKIP1
PMPLT9: ORA B ; remove new bits
;
.IFE TRS80-1,[
ORI 200]
MOV M,A
RET
;
;
;[CALOUT]
;
;
.IFG CALCOM,[
CALOUT: MOV A,C
MOV B,C
ANI N60
.JRNZ PLD35
;
CALL MSPXL
CALL DEL25
MVI B,0
CALL MSPXL
DEL25: MVI B,3
CALL MSDLY
RET
;
PLD35: CALL MSPXL
CALL DEL35
MVI B,0
CALL MSPXL
DEL35: MVI B,43
CALL MSDLY
RET
;
;
MSPXL: LDA OUTPL
MOV C,A
OUTP B ;Z80 only
RET
;
;
;
MSDLY:
MSDLY1: LDA STSPL
MSDLY0: DCR A
.JRNZ MSDLY0
.DJNZ MSDLY1
RET
]
;
;
.IFE TRS80-1,[
;[$250/CWC]
$250: MTAB CWSAF
$2501: LINKC $$SRA
.JRC $2502
MOV M,C
INX H
MOV A,M
TSTA
.JRZ $2501
;
$2502: LDA CWSAF
STA SYN+1
STA SYN1+1
LDA CWSEF
STA CPRP+1
STA CPRP+3
LDA CWCAS
STA CPCM+1
RET]
;
;
.END