ÚVOD | Novinky | 8 Bitů | Příslušenství | Drobnosti | TTL | Kontakt
SAPI-1 | ONDRA | PMI-80 | PMD-85 | klony PMD-85 | klony SM50/40 | PETR | PLAN-80A | IQ151 | TNS | FK-1 | HVĚZDA | SP 830 | PCS 1-QR6000
ZPS | Technické prostředky | Programové vybavení | Dokumentace
'MONITOR SAPI-1 V4.0F' MACRO-80 3.44 09-Dec-81 PAGE 1
1 ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2 TITLE 'MONITOR SAPI-1 V4.0F'
3 ; 30.7.1985 (P+S)
4 ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5 ;
6 ; DOPLNEN HANDLER SNIMACE FS1503 PRO DPP-1
7 ;
8 ; VOLBA SYSTEMU
9 FFFF SP1 EQU -1 ; -1 YES
10 0000 SP1A EQU 0 ;FOR CP/M SYSTEM MONITOR
11 0000 CPM EQU 00 ;JPR-1 EPROM VERSION
12 ;
13 ;
14 ; *** DEFINOVANI PAMETOVEHO PROSTORU *
15 ;
16 0100 MONIT EQU 100H ; START MONITORU
17 ; NASTAVENI PAMETI R A M
18
19 4000 RAM EQU 4000H ;START RAM
20 IF CPM
21 ERAM EQU 9FFFH ;TOP RAM
22 TVBEG EQU 0E800H ;TV-RAM
23 EP2 EQU 800H+200H ; SECOND EPROM
24 ELSE
25 FFFF ERAM EQU 0FFFFH ;RAM-1 48K
26 3800 TVBEG EQU 3800H ;TV-RAM
27 0800 EP2 EQU 800H ; SECOND EPROM
28 ENDIF
29 4000 @R@ EQU 4000H ;RESTART VECTOR
30 00CF RSTN EQU 0CFH ; RST 1
31
32 ; GLOBAL CONSTANTS
33
34 000D CR EQU 0DH ; CARRIAGE RETURN
35 0009 HT EQU 9 ; TAB
36 0008 BACK EQU 8 ; BACK SPACE
37 0007 BELL EQU 7 ; BELL
38 000A LF EQU 0AH ; LINE FEED
39 0003 ETX EQU 03H ; BREAK CHAR.(CONTROL C)
40 0017 CTRLW EQU 17H ; BREAK USER
41 0055 BEGIO EQU 55H ; START VALUE FOR I/O BYTE
42
43
44 ; I/O STATUS BYTE MASKS AND VALUES
45
46 00FC CMSK EQU 11111100B ; MASK FOR CONZOLE
47 00F3 RMSK EQU 11110011B ; MASK FOR READER
48 00CF PMSK EQU 11001111B ; MASK FOR PUNCH
49 003F LMSK EQU 00111111B ; MASK FOR LIST
50
51
52 0000 CTTY EQU 00000000B ; CONZOLE=TTY
53 0001 CCRT EQU 00000001B ; CONZOLE=CRT
54 0002 BATCH EQU 00000010B ; INPUT=READER,OUTPUT=LIST
55 0003 CUSE EQU 00000011B ; USER REFINED CONZOLE
56
'MONITOR SAPI-1 V4.0F' MACRO-80 3.44 09-Dec-81 PAGE 1-1
57
58 0000 RTTY EQU 00000000B ; READER=TTY
59 0004 RPTR EQU 00000100B ; READER=PTR
60 0008 RUSE1 EQU 00001000B ; USER DEFINED READER 1
61 000C RUSE2 EQU 00001100B ; USER DEFINED READER 2
62
63
64 0000 PTTY EQU 00000000B ; PUNCH=TTY
65 0010 PPTR EQU 00010000B ; PUNCH=PTR
66 0020 PUSE1 EQU 00100000B ; USER DEFINED PUNCH 1
67 0030 PUSE2 EQU 00110000B ; USER DEFINED PUNCH 2
68
69
70 0000 LTTY EQU 00000000B ; LIST=TTY
71 0040 LCRT EQU 01000000B ; LIST=CRT
72 0080 LLPT EQU 10000000B ; LIST=LPT
73 00C0 LUSE EQU 11000000B ; USER DEFINED LIST
74 ;
75 ; SEPI CONTROL I/O
76 ;
77 0012 UDATA EQU 12H
78 0011 USTAT EQU 11H
79 0011 MMODE EQU 11H
80 0010 UMODE EQU 10H
81 0013 URES EQU 13H
82 0002 ALLINT EQU 02H
83
84 0000' ASEG
85 IF SP1
86 ;
87 ; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
88 ; RESTARTS & CP/M ENTRY
89 ;
90 ; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
91
92 IF CPM
93 ORG 100H
94 ENDIF
95 IF NOT CPM
96 ORG 0 ; BEGIN MEMORY
97 ENDIF
98 0000 C3 04CF JMP COLD ; COLD START
99 0003 55 DB 55H ;INTEL IOBYT
100 0004 40 DB 40H ;V 4.0
101 0005 C3 003B JMP CCPM
102 0008 C3 4000 JMP @R@
103 ;
104 000B 3E 2D MINUS: MVI A,'-'
105 000D C3 04B8 JMP COA
106 0010 C3 4003 JMP @R@+3
107 ;
108 0013 3E 3D EQUAL: MVI A,'='
109 0015 C3 04B8 JMP COA
110 0018 C3 4006 JMP @R@+6
111 ;
112 001B 3E 3F QUES: MVI A,'?'
'MONITOR SAPI-1 V4.0F' MACRO-80 3.44 09-Dec-81 PAGE 1-2
113 001D C3 04B8 JMP COA
114 0020 C3 4009 JMP @R@+9
115 ;
116 0023 3A 40ED IOCHK: LDA IOBYT
117 0026 C9 RET
118 0027 50 DB 'P'
119 0028 C3 400C JMP @R@+12
120 ;
121 002B 79 IOSET: MOV A,C
122 002C 32 40ED STA IOBYT
123 002F C9 RET
124 0030 C3 400F JMP @R@+15
125 ;
126 0033 2A 40A5 SPCL: LHLD CADR
127 0036 7E MOV A,M
128 0037 C9 RET ; FOR PEDIT
129 0038 C3 4012 JMP @R@+18
130 ;
131 003B 79 CCPM: MOV A,C ;CONTINUE ENTRY TO CPM
132 003C 4B MOV C,E ; INTEL
133 003D D5 PUSH D ;DE->HL
134 003E 21 0046 LXI H,TCPM
135 0041 06 0B MVI B,11 ; MAX CPM ENTRY
136 0043 C3 0554 JMP INJM@
137 ;-------------------------------
138 0046 04CF 005E TCPM: DW COLD,CI
139 004A 05E4 02E9 DW CO,RI
140 004E 02F5 0301 DW PO,LO
141 0052 028B 0023 DW CICO,IOCHK
142 0056 002B 0162 DW IOSET,ERROR
143 005A 0162 01C6 DW ERROR,CSTS
144
145 005E E5 CI: PUSH H
146 005F 21 00D3 LXI H,CITB
147 0062 C3 05E8 JMP IOCOM-3
148 ;
149
150 0065 41 51 31 TABCOD: DB 'AQ1'
151 0068 1B 0D DB 1BH,0DH ; ESC, CR
152 006A 50 30 DB 'P0'
153
154 006C 5A 53 57 32 DB 'ZSW2 LO9'
155 0070 20 4C 4F 39
156
157 0074 58 44 45 33 DB 'XDE3MKI8'
158 0078 4D 4B 49 38
159
160 007C 43 46 52 34 DB 'CFR4NJU7'
161 0080 4E 4A 55 37
162
163 0084 56 47 54 35 DB 'VGT5BHY6'
164 0088 42 48 59 36
165
166 ; POKRACOVANI TABULKY - SHIFT
167 008C 10 11 DB 10H,11H ; ^A ^Q
168 008E 21 DB '!'
'MONITOR SAPI-1 V4.0F' MACRO-80 3.44 09-Dec-81 PAGE 1-3
169 008F 0A 0D DB 0AH,0DH
170 0091 7F DB 7FH
171 0092 29 DB ')'
172
173 0093 5A DB 'Z'
174 0094 13 17 DB 13H,17H ; ^S, ^W
175 0096 3F DB '?'
176 0097 09 DB 9 ; TABELATOR/SHIFT SPC
177 0098 3D 23 28 DB '=#('
178
179 009B 03 DB 3 ; EXT/SHIFT X
180 009C 26 45 22 2E DB '&E".*@>'
181 00A0 2A 40 3E
182
183 00A3 5B 5C 25 24 DB '[\%$,-:<'
184 00A7 2C 2D 3A 3C
185
186 00AB 5D 5F DB ']_'
187 00AD 08 DB 8 ; BACKSPACE
188 00AE 5E DB '^'
189 00AF 3B 2B 2F DB ';+/'
190 00B2 27 DB 27H ; ' UVOZOVKA
191
192 ; I/O DEVICE TABLE
193 ;
194 00B3 43 03 IOTAB: DB 'C',03H ;CONSOLE (LOCAL, MASK)
195 00B5 54 43 42 31 DB 'TCB1' ;PHYSICAL
196 00B9 52 0C DB 'R',0CH ;READER
197 00BB 54 50 31 32 DB 'TP12'
198 00BF 50 30 DB 'P',30H ;PUNCHER
199 00C1 54 50 31 32 DB 'TP12'
200 00C5 4C C0 DB 'L',0C0H ;LIST
201 00C7 54 43 4C 31 DB 'TCL1'
202
203 ; ASSING TABLE FOR LOG. DEVICE
204 ;
205 00CB 030D 06A4 COTB: DW COLO,CRT,LO,COLOC
206 00CF 0301 40CE
207 00D3 0265 0265 CITB: DW KBR,KBR,RI,CILOC
208 00D7 02E9 40CB
209 00DB 030D 05E4 LOTB: DW COLO,CO,LPR,LILOC
210 00DF 07B9 40DD
211 00E3 0265 07E8 RITB: DW KBR,RDR,R1LOC,R2LOC
212 00E7 40D1 40D4
213 00EB 05E4 07D3 POTB: DW CO,PUN,P1LOC,P2LOC
214 00EF 40D7 40DA
215 ;
216 ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
217 00F3 0D 0A VERS: DB CR,LF
218 00F5 53 41 50 49 DB 'SAPI-1 V4.0'
219 00F9 2D 31 20 56
220 00FD 34 2E 30
221 000D LVER EQU $-VERS ; DELKA OHLASENI
222 ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
223
224 ;***************************************************
'MONITOR SAPI-1 V4.0F' MACRO-80 3.44 09-Dec-81 PAGE 1-4
225 IF CPM
226 ORG MONIT+100H
227 ELSE
228 ORG MONIT ; *** ZACATEK MONITORU ***
229 ENDIF
230 ;***************************************************
231
232 ; TABLE OF EXTERNALLY REFERENCED ROUTINES
233
234 0100 C3 04CF JMP COLD ; START MONITORU
235 0103 C3 005E JMP CI ; CONZOLE INPUT <A>
236 0106 C3 02E9 JMP RI ; READER INPUT <A>, CY=1 ERROR
237 0109 C3 05E4 JMP CO ; CONZOLE OUTPUT <C>
238 010C C3 02F5 JMP PO ; PUNCH OUTPUT <C>
239 010F C3 0301 JMP LO ; LIST OUTPUT <C>
240 0112 C3 01C6 JMP CSTS ; CONZOLE INPUT STATUS
241 0115 C3 0023 JMP IOCHK ; I/O BYTE CHEK <A>
242 0118 C3 002B JMP IOSET ; I/O BYTE SET <C>
243 011B C3 065F JMP MEMCK ; SIZE MEMORY CHECK
244 011E C3 0604 JMP IODEF ; DEFINE USER I/O ENTRY POINTS
245 0121 C3 0033 JMP SPCL ; I/O CONTROL SPECIAL
246 0124 C3 05DD JMP CRLF ; NOVY RADEK
247 0127 C3 05B1 JMP EXPR ; SKLADANI ADRES (N=POCET <C>, SP)
248 012A C3 0162 JMP ERROR ; HLASENI CHYBY
249 012D C3 0667 JMP ASHEX ; PREVOD ASCII->HEX,CHYBA-CARRY
250 0130 C3 0646 JMP DADR ; ZOBRAZENI ADRESY <HL>
251 0133 C3 0651 JMP DBYT ; ZOBRAZENI ZNAKU <A> NA 'CO'
252 0136 C3 0624 JMP HILO ; HL+1,SROVNANI S DE,(HL=0)
253 0139 C3 0526 JMP NEXT ; PREDANI MONITORU
254 013C C3 0697 JMP SPACE ; MEZERA NA 'CO'
255 013F C3 067B JMP CINCR ; ECHO+ANALIZA
256 0142 C3 068A JMP TEXT ; VYPIS TEXTU <HL=ADRESA>,<D=DELKA>
257 0145 C3 0547 JMP XY ; PROVEDENI POVELU DLE <A>
258 0148 C3 05A6 JMP HXASC ; PREVOD HEX->ASCII DO <A>,<C>
259 014B C3 04BF JMP EXFLG ; EXTERNAL CONTROL FLAGS
260 ;
261 ;"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
262 ; ASSIGN I/O DEVICE MODUL
263 ;
264 014E CD 0678 ASIGN: CALL CIMIN ;NAME
265 ; <A>..NAME (EXTERN CALLS)
266 0151 21 00B3 LXI H,IOTAB ;TABLE
267 0154 0E 04 MVI C,4 ;COUNTER
268 0156 11 0006 LXI D,6 ;OFFSET
269 0159 BE ASS0: CMP M ;IS IT?
270 015A CA 016B JZ ASS1 ;+
271 015D 19 DAD D ;ADR
272 015E 0D DCR C ;ALL ?
273 015F C2 0159 JNZ ASS0 ;-
274 ;
275 ; ERROR MESSAGE
276 ;
277 0162 CD 001B ERROR: CALL QUES
278 0165 CD 0218 CALL BEEP
279 0168 C3 051E JMP INIC ;START
280 ;
'MONITOR SAPI-1 V4.0F' MACRO-80 3.44 09-Dec-81 PAGE 1-5
281 016B CD 0013 ASS1: CALL EQUAL
282 016E CD 04B5 CALL ECHO ;PHIS.D
283 0171 23 INX H
284 0172 46 MOV B,M ;MASK
285 0173 0E 00 MVI C,0 ;IOBYT
286 0175 23 ASS2: INX H
287 0176 BE CMP M ;IS IT?
288 0177 CA 0186 JZ ASS3 ;+
289 017A F5 PUSH PSW
290 017B 3E 55 MVI A,55H ;OFFSET
291 017D 81 ADD C
292 017E 4F MOV C,A
293 017F DA 0162 JC ERROR ;NO #
294 0182 F1 POP PSW
295 0183 C3 0175 JMP ASS2 ;NEXT
296 0186 79 ASS3: MOV A,C ;COMPUTE IOBYT
297 0187 A0 ANA B ;MASK
298 0188 4F MOV C,A ;SAVE
299 0189 78 MOV A,B
300 018A 2F CMA ;NEG
301 018B 21 40ED IONEW: LXI H,IOBYT
302 018E A6 ANA M
303 018F B1 ORA C
304 0190 77 MOV M,A
305 0191 C9 RET
306 ;
307 ; QUERY DEVICE
308 ;
309 0192 21 00B3 QUERY: LXI H,IOTAB ;TABLE
310 0195 3A 40ED LDA IOBYT ; READ
311 0198 47 MOV B,A ;SAVE
312 0199 CD 019C CALL $+3
313 019C CD 019F CALL $+3 ;DO IT
314 ; DISPLAY ASSIGN I/O
315 019F CD 0697 CALL SPACE
316 01A2 7E MOV A,M ; READ LOGICAL NAME
317 01A3 CD 04B8 CALL COA
318 01A6 CD 0013 CALL EQUAL
319 01A9 E5 PUSH H ;SAVE ADR
320 01AA 23 INX H
321 01AB 23 INX H ;ADR
322 01AC 78 MOV A,B
323 01AD E6 03 ANI 3
324 01AF 5F MOV E,A
325 01B0 16 00 MVI D,0
326 01B2 19 DAD D ;PHYSICAL DEVICE ADR
327 01B3 7E MOV A,M
328 01B4 CD 04B8 CALL COA
329 01B7 78 MOV A,B
330 01B8 0F RRC
331 01B9 0F RRC ;ROTATE IOBYT
332 01BA 47 MOV B,A
333 01BB E1 POP H
334 01BC 1E 06 MVI E,6 ;OFFSET
335 01BE 19 DAD D
336 01BF C9 RET ;HL=NEXT ADR
'MONITOR SAPI-1 V4.0F' MACRO-80 3.44 09-Dec-81 PAGE 1-6
337 ;
338 ;%%%%%%%%%%%%%%%%%%%%%%%%%
339 ; I/O DEVICE CONTROL
340 ;%%%%%%%%%%%%%%%%%%%%%%%%%
341
342 01C0 B7 CSTS1: ORA A
343 01C1 FA 40E0 JM CSLOC ;USER CSTS
344 01C4 AF XRA A
345 01C5 C9 RET ;BATCH-NOT READY
346 ;
347 01C6 3A 40ED CSTS: LDA IOBYT
348 01C9 1F RAR
349 01CA 1F RAR
350 01CB DA 01C0 JC CSTS1
351 IF NOT CPM
352
353 01CE E5 KBRST: PUSH H ; KEYBOARD STATUS
354 01CF D5 PUSH D
355 01D0 C5 PUSH B
356 01D1 26 24 MVI H,24H ; PORT0
357 ; #VERS."F"#
358 01D3 36 10 MVI M,10H ;#BEZ SLOUPCE SHIFT
359 01D5 7E MOV A,M ;#
360 01D6 3C INR A ;#0FFH+1=CO
361 01D7 C2 01E0 JNZ KBRS1 ;#
362 01DA 36 0F MVI M,0FH ;#JEN SLOUPEC SHIFT
363 01DC 37 STC ;#
364 01DD 7E MOV A,M ;#
365 01DE 1F RAR ;#SHIFT NETESTUJE
366 01DF 3C INR A ;#
367 01E0 21 40A8 KBRS1: LXI H,FLAG
368 01E3 CA 01F8 JZ SET80 ; POVOL
369 01E6 7E MOV A,M ; CSTS POVOLENO?
370 01E7 3C INR A ; FF+1=00..ZAKAZ
371 01E8 CA 01FB JZ CSTS0
372 01EB CD 0233 CALL KEYIN ; ZACHOVA 'HL'
373 01EE FA 01F8 JM SET80 ; POVOL
374 01F1 77 MOV M,A ; USCHOVA LIN. KODU
375 01F2 3E FF MVI A,0FFH
376 01F4 B7 ORA A ; TRUE, NOT ZERO
377 01F5 C3 01FB JMP CSTS0
378
379 01F8 36 80 SET80: MVI M,80H ; POVOL CSYS
380 01FA AF XRA A ; SET ZERO
381 01FB C1 CSTS0: POP B
382 01FC D1 POP D
383 01FD E1 POP H
384 01FE C9 RET
385 ;
386 ELSE
387 PUSH B
388 PUSH D
389 PUSH H
390 MVI C,6
391 MVI E,0FFH
392 CALL 5
'MONITOR SAPI-1 V4.0F' MACRO-80 3.44 09-Dec-81 PAGE 1-7
393 CPI CTRLW
394 CZ RESTA ; BREAK
395 ORA A
396 POP H
397 POP D
398 POP B
399 RET
400 ;
401 ENDIF
402
403 01FF 3A 40A4 DTTO?: LDA LASTC
404 0202 B9 CMP C
405 0203 C2 02B6 JNZ LONG
406 0206 2A 40A9 LHLD LIMIT
407 0209 2B DCX H
408 020A 22 40A9 SHLD LIMIT
409 020D 7C MOV A,H
410 020E B5 ORA L
411 020F C2 02A4 JNZ CI1
412 0212 21 0064 LXI H,100 ; 100 MS
413 0215 C3 02B9 JMP LSET
414
415 0218 C5 BEEP: PUSH B
416 0219 0E 28 MVI C,40
417 021B CD 0224 CALL CLICK
418 021E 0D DCR C
419 021F C2 021B JNZ $-4
420 0222 C1 POP B
421 0223 C9 RET
422
423 0224 26 24 CLICK: MVI H,24H ; PORT0
424 0226 36 5F MVI M,5FH ; REPRO ON
425 0228 05 CLCK1: DCR B
426 0229 C2 0228 JNZ CLCK1
427 022C 36 1F MVI M,1FH ; REPRO OFF
428 022E 05 CLCK2: DCR B
429 022F C2 022E JNZ CLCK2
430 0232 C9 RET
431
432
433 ; PROHLEDAVANI KLAVESNICE ANK-1
434 ;===============================
435 ; KONSTANTNI DOBA PROHLEDAVANI 0.816 MS/488NS.
436 ; PLATNA POSLEDNI NALEZENA KLAVESA.
437 ; B...CITAC DO 8, C... LINEARNI KOD
438 ; D...SHIFT FLAG, SOUCASNE MASKA LED.
439 ; E...CITAC LINEARNIHO KODU KLAVES:
440 ; A-Q-1-LF-CR-P-0 Z-S-W-SP-L-O-9..
441 ; H...UKAZATEL NA PORT0 JPR-1
442 ; L...VYBER MATICE VODOROVNE
443
444 ; PO PROVEDENI KOD V 'A', 'C' REGISTRU.
445 ; PRIZNAK 'SHIFT' V 'D' REGISTRU.
446 ; FLAG 'SIGN' SIGNALIZUJE STISKNUTI-
447 ; PLUS...ANO, MINUS...NE
448
'MONITOR SAPI-1 V4.0F' MACRO-80 3.44 09-Dec-81 PAGE 1-8
449 0233 E5 KEYIN: PUSH H ; V2.2 20.1.85
450 0234 11 1FFF LXI D,1FFFH ; MASKA&CITAC
451 0237 0E 00 MVI C,0
452 0239 26 24 MVI H,24H ; PORT0
453 023B 3E EF MVI A,11101111B
454 023D 6F NXLIN: MOV L,A
455 023E A2 ANA D
456 023F 77 MOV M,A
457 0240 06 08 MVI B,8 ; CITAC BITU
458 0242 7E MOV A,M
459 0243 0F KEY: RRC
460 0244 1C INR E ; NACTI KOD
461 0245 DA 024E JC NXKEY ; SKOC, KDYZ NIC
462 0248 4B MOV C,E ; KOD KLAVESY
463 0249 C2 024E JNZ NXKEY ; SHIFT ?
464 024C 16 3F MVI D,3FH ; ANO NASTAV MASKU
465 024E 05 NXKEY: DCR B
466 024F C2 0243 JNZ KEY
467 0252 7D MOV A,L
468 0253 0F RRC
469 0254 DA 023D JC NXLIN
470 0257 0D DCR C ; NASTAV 'SIGN'
471 0258 E1 POP H
472 0259 F8 RM ; STISKNUTA?
473 025A 7A MOV A,D ; SHIFT?
474 025B E6 20 ANI 20H
475 025D 79 MOV A,C
476 025E C8 RZ ; NE,NAVRAT
477 025F 83 ADD E ; ANO, +39
478 0260 4F MOV C,A
479 0261 C9 RET
480
481 ENDIF
482 ;
483 ;
484 ;
485 0262 CD 0313 CALL RESTA ;^W
486 0265 CD 0294 KBR: CALL KBRD
487 0268 FE 17 CPI CTRLW
488 026A CA 0262 JZ KBR-3 ; SIMUL. INTERRUPT
489 026D FE 11 CPI CTRLQ
490 026F C0 RNZ
491
492 0270 C5 PUSH B ;WINDOW
493 0271 D5 PUSH D
494 0272 E5 PUSH H
495 0273 06 00 MVI B,0
496 0275 CD 07A0 CALL UCMD ;CLEAR
497 0278 CD 0294 CALL KBRD ;NUMBER OF RESEVED LINES
498 027B E6 0F ANI 0FH ;MAX 15
499 027D 32 40EA STA RESL
500 0280 06 80 MVI B,80H ;SET NEW LINE
501 0282 CD 07A0 CALL UCMD
502 0285 E1 POP H
503 0286 D1 POP D
504 0287 C1 POP B
'MONITOR SAPI-1 V4.0F' MACRO-80 3.44 09-Dec-81 PAGE 1-9
505 0288 C3 0265 JMP KBR ;NEW CHAR.
506 ;
507 028B 79 CICO: MOV A,C ; DIRECT CRT/KBRD
508 028C 3C INR A
509 028D C2 06A4 JNZ CRT ; ONLY OUTPUT
510 0290 CD 01CE CALL KBRST
511 0293 C8 RZ
512
513 0294 C5 KBRD: PUSH B ;DIRCT KEYBOARD
514 0295 D5 PUSH D
515 0296 E5 PUSH H
516 ;
517 IF CPM
518 KBR1 MVI E,0FFH
519 MVI C,6
520 CALL 5
521 ANI 7FH
522 JNZ KBR1 ;WAIT
523 ELSE
524 ;
525 ; AUTOREPEAT+KEYIN+CSTS+CLICK V2.6
526
527 0297 3A 40A8 LDA FLAG ; STATUS CSTS
528 029A B7 ORA A
529 029B FA 02A4 JM CI1 ; BIT7..STANDARD CI
530 029E 4F MOV C,A
531 029F 06 00 MVI B,0 ; LIN. KOD V 'BC'
532 02A1 C3 02C8 JMP SETLST ; SET LAST CODE
533
534 02A4 CD 0233 CI1: CALL KEYIN
535 02A7 F2 01FF JP DTTO?
536 02AA 2E 14 PRESS: MVI L,20
537 02AC CD 0233 WAIT0: CALL KEYIN
538 02AF F2 02AA JP PRESS
539 02B2 2D DCR L
540 02B3 C2 02AC JNZ WAIT0
541 02B6 21 03E8 LONG: LXI H,1000 ; 1 SEKUNDA
542 02B9 22 40A9 LSET: SHLD LIMIT
543 02BC 2E 0A FREE: MVI L,10 ; 10 MS
544 02BE CD 0233 WAIT1: CALL KEYIN
545 02C1 FA 02BC JM FREE
546 02C4 2D DCR L
547 02C5 C2 02BE JNZ WAIT1
548 02C8 32 40A4 SETLST: STA LASTC
549 02CB 21 0065 LXI H,TABCOD
550 02CE 09 DAD B
551 02CF 3E FF MVI A,0FFH
552 02D1 32 40A8 STA FLAG ; ZAKAZ CSTS
553 02D4 7E MOV A,M
554 02D5 CD 0224 CALL CLICK
555
556 ENDIF
557 ;
558 02D8 E1 POP H
559 02D9 D1 POP D
560 02DA C1 POP B
'MONITOR SAPI-1 V4.0F' MACRO-80 3.44 09-Dec-81 PAGE 1-10
561 02DB FE 10 CPI CTRLP ;^P
562 02DD C0 RNZ
563 02DE 3A 40E3 LDA MODE
564 02E1 EE 01 XRI 1
565 02E3 32 40E3 STA MODE ; LPR ON/OFF
566 02E6 C3 0294 JMP KBRD
567 ;
568 ;
569 02E9 E5 RI: PUSH H
570 02EA 21 00E3 LXI H,RITB
571 02ED 3A 40ED LDA IOBYT
572 02F0 0F RICOM: RRC
573 02F1 0F RRC
574 02F2 C3 05EB JMP IOCOM
575 ;
576 02F5 E5 PO: PUSH H
577 02F6 21 00EB LXI H,POTB
578 02F9 3A 40ED LDA IOBYT
579 02FC 0F RRC
580 02FD 0F RRC
581 02FE C3 02F0 JMP RICOM
582 ;
583 0301 E5 LO: PUSH H
584 0302 21 00DB LXI H,LOTB
585 0305 3A 40ED LDA IOBYT
586 0308 07 RLC
587 0309 07 RLC
588 030A C3 05EB JMP IOCOM
589 ;----------------------------
590 ;
591 030D CD 07B9 COLO: CALL LPR
592 0310 C3 06A4 JMP CRT
593 ;----------------------------
594 ;
595 ;
596 ; RUN AND BREAK MODUL:
597 ;
598 0313 F3 RESTA: DI ;SAVE ALL
599 0314 22 4098 SHLD HLSAV
600 0317 F5 PUSH PSW
601 0318 21 0002 LXI H,2 ;OFSSET
602 031B 39 DAD SP
603 031C 22 409C SHLD SPSAV
604 031F F1 POP PSW
605 0320 E1 POP H ;PC
606 0321 31 4098 LXI SP,HLSAV
607 0324 D5 PUSH D
608 0325 C5 PUSH B
609 0326 F5 PUSH PSW
610 0327 EB XCHG
611 0328 1B DCX D ; PC-1
612 0329 21 409E LXI H,BRAD ;BREAK ?
613 032C 0E 02 MVI C,2 ; TWO BREAKS
614 032E C5 RST10: PUSH B ;COUNTER
615 032F 4E MOV C,M
616 0330 36 00 MVI M,0
'MONITOR SAPI-1 V4.0F' MACRO-80 3.44 09-Dec-81 PAGE 1-11
617 0332 23 INX H
618 0333 46 MOV B,M
619 0334 36 00 MVI M,0
620 0336 23 INX H
621 0337 79 MOV A,C
622 0338 B0 ORA B ;0 ?
623 0339 CA 034A JZ RST20 ;NO BREAK
624 033C 7E MOV A,M ;RESTORE INSTR
625 033D 02 STAX B
626 033E 23 INX H
627 033F E5 PUSH H
628 0340 60 MOV H,B
629 0341 69 MOV L,C ;BREAK/INTR ?
630 0342 CD 0629 CALL COMPR
631 0345 E1 POP H
632 0346 C2 034A JNZ RST20
633 0349 1B DCX D ;PC-1
634 034A C1 RST20: POP B
635 034B 0D DCR C
636 034C C2 032E JNZ RST10
637 034F EB XCHG
638 0350 23 INX H ;RESTORE PC
639 0351 22 409A SHLD PCSAV
640 0354 37 STC
641 0355 CD 03AB CALL X+3 ;DISPLAY ALL REGISTERS
642 0358 C3 0526 JMP NEXT ;WAIT FOR COMMAND
643 ;
644 ; GO TO COMMAND
645 ;
646 035B CD 0013 GOTO: CALL EQUAL
647 035E CD 067B CALL CINCR ;COMMAND
648 0361 DA 0392 JC GO@ ;IF CR THEN GOTO FROM OLD PC
649 0364 CA 0374 JZ GO@BR ; OLD PC AND BREAK
650 0367 CD 05F0 CALL EXPRM ;START ADR
651 036A E1 POP H
652 036B 22 409A SHLD PCSAV ;SET NEW
653 036E 78 MOV A,B ;ONLY START ADR ?
654 036F FE 0D CPI CR
655 0371 CA 0392 JZ GO@
656 0374 CD 062F GO@BR: CALL RADR ;READ BREAK ADR
657 0377 22 409E SHLD BRAD
658 037A 7E MOV A,M ;SAVE INSTR. CODE
659 037B 32 40A0 STA INSTR
660 037E 36 CF MVI M,RSTN ;SET RST
661 0380 3E 0D MVI A,CR
662 0382 B8 CMP B ;ONLY 1-BREAK ?
663 0383 CA 0392 JZ GO@
664 ; SECOND BREAK
665 0386 CD 062F CALL RADR
666 0389 22 40A1 SHLD BRAD2
667 038C 7E MOV A,M
668 038D 32 40A3 STA INST2
669 0390 36 CF MVI M,RSTN
670 ; START PROGRAM
671 0392 CD 05DD GO@: CALL CRLF
672 0395 F3 DI
'MONITOR SAPI-1 V4.0F' MACRO-80 3.44 09-Dec-81 PAGE 1-12
673 0396 31 4092 LXI SP,ACSAV ;REASTORE REGISTERS
674 0399 F1 POP PSW
675 039A C1 POP B
676 039B D1 POP D
677 039C 2A 409C LHLD SPSAV ;STACK
678 039F F9 SPHL
679 03A0 2A 409A LHLD PCSAV ; PC
680 03A3 E3 XTHL
681 03A4 2A 4098 LHLD HLSAV
682 03A7 C9 RET ;CONTINUE...
683 ;
684 ; EXAMINE REGISTRS
685 ;
686 03A8 CD 067B X: CALL CINCR ;COMMAND
687 03AB 21 0419 LXI H,RGNAM ;NAME TABLE
688 03AE 16 40 MVI D,HIGH ACSAV ;DATA
689 03B0 D2 03BE JNC X1 ;CHANGE
690 03B3 CD 05DD CALL CRLF
691 03B6 CD 03F6 X0: CALL XDISP
692 03B9 C8 RZ ;END
693 03BA 23 INX H
694 03BB C3 03B6 JMP X0
695 03BE CA 03D5 X1: JZ X2 ;NO CHANGE
696 03C1 5F MOV E,A ;SAVE NAME
697 03C2 01 DB 1 ; LXI B,##
698 03C3 23 X10: INX H
699 03C4 23 INX H
700 03C5 7E MOV A,M ; READ NAME REG.
701 03C6 E6 7F ANI 7FH
702 03C8 CA 0162 JZ ERROR ; NO FIND
703 03CB BB CMP E
704 03CC C2 03C3 JNZ X10 ; NEXT
705 03CF CD 0400 CALL XDIS1 ; DISPLAY IT
706 03D2 C3 03D8 JMP X2+3
707 ;
708 03D5 CD 03F9 X2: CALL XDISP+3
709 03D8 C8 RZ
710 03D9 CD 0678 CALL CIMIN ;- COMMAND
711 03DC D8 RC ;CR - END
712 03DD 5E MOV E,M ;LOW ADR
713 03DE 23 INX H
714 03DF CA 03D5 JZ X2 ;SP - NEXT
715 03E2 EB XCHG
716 03E3 D5 PUSH D
717 03E4 CD 0636 CALL RBYT ; READ NEW BYTE AND CHANGE
718 03E7 05 DCR B
719 03E8 CA 03EE JZ $+6
720 03EB 72 MOV M,D ; HIGH BYTE
721
722 03EC 2B DCX H
723 03ED 73 MOV M,E ;LOW
724 03EE D1 POP D
725 03EF EB XCHG
726 03F0 FE 0D CPI CR ;LAST?
727 03F2 C8 RZ ;+
728 03F3 C3 03D5 JMP X2 ;NEXT
'MONITOR SAPI-1 V4.0F' MACRO-80 3.44 09-Dec-81 PAGE 1-13
729 ;
730 03F6 CD 0697 XDISP: CALL SPACE
731 03F9 7E MOV A,M
732 03FA E6 7F ANI 7FH
733 03FC C8 RZ
734 03FD CD 04B8 CALL COA
735 0400 CD 0013 XDIS1: CALL EQUAL ;NAME=
736 0403 7E MOV A,M
737 0404 07 RLC
738 0405 3E 01 MVI A,1
739 0407 CE 00 ACI 0 ; COMPUTE LENGHT
740 0409 47 MOV B,A ; SAVE
741 040A 23 INX H
742 040B 5E MOV E,M ; LOW ADR
743 040C 1A LDAX D ;HIG BYTE
744 040D CD 0651 CALL DBYT
745 0410 78 MOV A,B ;SINGLE REG. ?
746 0411 3D DCR A
747 0412 1B DCX D
748 0413 1A LDAX D ;READ SECOND BYTE
749 0414 C4 0651 CNZ DBYT ;IF 2.BYTE REG. THEN DISP.
750 0417 B3 ORA E ;NZY (IN PAGE)
751 0418 C9 RET
752 ;
753 ; X: COMMAND TABLE
754 0419 41 93 RGNAM: DB 'A',LOW ACSAV+1
755 041B 46 92 DB 'F',LOW ACSAV
756 041D 42 95 DB 'B',LOW BCSAV+1
757 041F 43 94 DB 'C',LOW BCSAV
758 0421 44 97 DB 'D',LOW DESAV+1
759 0423 45 96 DB 'E',LOW DESAV
760 0425 48 99 DB 'H',LOW HLSAV+1
761 0427 4C 98 DB 'L',LOW HLSAV
762 0429 D0 9B DB 'P' OR 80H,LOW PCSAV+1
763 042B D3 9D DB 'S' OR 80H,LOW SPSAV+1
764 042D 00 DB 0
765 ;
766 ; DISPLAY CONTENS OF MEMORY
767 ;
768 042E CD 05B1 DISP: CALL EXPR ; FROM -TO
769 0431 D1 POP D
770 0432 E1 POP H
771 0433 E5 DI0: PUSH H ;FIRST ADR
772 0434 CD 0643 CALL DNADR ;NEW ADR
773 0437 7E DI1: MOV A,M
774 0438 CD 0694 CALL DBYTE
775 043B CD 0624 CALL HILO
776 043E DA 0447 JC DIA ;DISPLAY ASCII
777 0441 7D MOV A,L
778 0442 E6 07 ANI 7
779 0444 C2 0437 JNZ DI1 ;NEXT BYTE
780 0447 E1 DIA: POP H
781 0448 CD 0697 CALL SPACE
782 044B 7E DI2: MOV A,M
783 044C 0E 2E MVI C,'.' ;NO ASCII
784 044E FE 20 CPI ' '
'MONITOR SAPI-1 V4.0F' MACRO-80 3.44 09-Dec-81 PAGE 1-14
785 0450 D2 0454 JNC $+4
786 0453 79 MOV A,C
787 0454 FE 60 CPI 60H
788 0456 DA 045B JC $+5
789 0459 D6 20 SUI ' '
790 045B CD 04B8 CALL COA
791 045E CD 0624 CALL HILO
792 0461 D8 RC
793 0462 7D MOV A,L
794 0463 E6 07 ANI 7
795 0465 C2 044B JNZ DI2 ;NEXT ASCII
796 0468 CD 01C6 CALL CSTS
797 046B CA 0433 JZ DI0 ;NEXT LINE
798 046E CD 0678 CALL CIMIN ;#VERS."F" -
799 0471 D8 RC ;#IF SPC WAIT
800 0472 C0 RNZ ;#ELSE BREAK.
801 0473 CD 067B CALL CINCR ;#CR?
802 0476 D2 0433 JNC DI0 ;#BREAK,IF CR
803 0479 C9 RET
804 ;
805 ; FILL MEMORY BLOCK WITH BYTE
806 ;
807 047A 0C FILL: INR C
808 047B CD 05B1 CALL EXPR ;FROM-TO-WITH
809 047E C1 POP B
810 047F D1 POP D
811 0480 E1 POP H
812 0481 71 FI1: MOV M,C
813 0482 CD 0624 CALL HILO
814 0485 D2 0481 JNC FI1
815 0488 C9 RET
816 ;
817 ; MOVE BLOCK MEMORY
818 ;
819 0489 0C MOVE: INR C
820 048A CD 05B1 CALL EXPR
821 048D C1 POP B
822 048E D1 POP D
823 048F E1 POP H
824 0490 7E MO1: MOV A,M
825 0491 02 STAX B
826 0492 03 INX B
827 0493 CD 0624 CALL HILO
828 0496 D2 0490 JNC MO1
829 0499 C9 RET
830 ;
831 ; SUBSTITUTE MEMORY
832 ;
833 049A CD 062F SUBS: CALL RADR ;ADR
834 049D 7E SU1: MOV A,M
835 049E CD 0651 CALL DBYT
836 04A1 CD 0678 CALL CIMIN ;- & CINCR
837 04A4 D8 RC ;CR
838 04A5 CA 04AC JZ SU2
839 04A8 CD 0636 CALL RBYT ;CHANGE
840 04AB C8 RZ ;END
'MONITOR SAPI-1 V4.0F' MACRO-80 3.44 09-Dec-81 PAGE 1-15
841 04AC 23 SU2: INX H ;NEXT BYTE
842 04AD FE 2C CPI ',' ;IF , THEN DISPLAY ADR
843 04AF CC 0643 CZ DNADR
844 04B2 C3 049D JMP SU1
845 ;
846 ; CONSOLE MODUL
847 ;
848 ;
849 04B5 CD 005E ECHO: CALL CI
850 04B8 C5 COA: PUSH B
851 04B9 4F MOV C,A
852 04BA CD 05E4 CALL CO
853 04BD C1 POP B
854 04BE C9 RET
855 ;
856 IF SP1A
857 MINUS: MVI A,'-'
858 JMP COA
859 ;
860 EQUAL: MVI A,'='
861 JMP COA
862 ;
863 QUES: MVI A,'?'
864 JMP COA
865 ;
866 ENDIF
867 ;
868 ;SET MODE. I/O FLAGS
869 ;
870 04BF 47 EXFLG: MOV B,A
871 04C0 79 MOV A,C
872 04C1 FE 0A CPI EXSER ; OVERFLOW ?
873 04C3 78 MOV A,B
874 04C4 D0 RNC
875 04C5 E5 PUSH H ; <A> .. COMMAND
876 ; <C> .. 0-N SLUZBA
877 04C6 06 00 MVI B,0 ; 0-MODE, 1-@IF1..4@OF2
878 04C8 21 40E3 LXI H,MODE ; 0=0
879 04CB 09 DAD B ; 5- RESERVE_LINE, 6-S@FLG
880 04CC 77 MOV M,A
881 04CD E1 POP H
882 04CE C9 RET
883
884 ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
885 ; **** S T A R T M O N I T O R U ****
886 ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
887 ;
888 04CF D3 13 COLD: OUT URES ; RESET
889 04D1 AF XRA A ;MONITORU
890 04D2 D3 10 OUT UMODE
891 04D4 3E 0D MVI A,0DH
892 04D6 D3 11 OUT MMODE
893 04D8 3E BC MVI A,0BCH ; A-IN,B-OUT,MOD1
894 04DA D3 33 OUT CNTR1 ; DPP-1
895 ;
896 ;-------------------------------------
'MONITOR SAPI-1 V4.0F' MACRO-80 3.44 09-Dec-81 PAGE 1-16
897 04DC F3 BEG: DI ; COMMAND "C"
898 04DD 21 4090 LXI H,MSTAK ; SET STACK POINTER
899 04E0 F9 SPHL
900 04E1 11 40FF LXI D,@R@+255
901 04E4 0E 00 MVI C,0
902 04E6 CD 0481 CALL FI1 ;CLEAR M-RAM
903 04E9 3E 55 MVI A,BEGIO ;SET IOBYTE
904 04EB 32 40ED STA IOBYT
905 04EE CD 069C CALL COINIT ;TV
906 04F1 CD 059A CALL EP2? ;M-PLUS ?
907 04F4 CC 0803 CZ EP2+3 ;INIT M-PLUS
908 04F7 21 4000 LXI H,RAM
909 04FA 24 MEM1: INR H ; NEXT PAGE
910 04FB 7C MOV A,H
911 IF HIGH ERAM NE 0FFH
912 CPI HIGH ERAM+1
913 ELSE
914 04FC FE 00 CPI 0
915 ENDIF
916 04FE CA 050A JZ MEM2
917 0501 7E MOV A,M
918 0502 2F CMA
919 0503 77 MOV M,A ; WRITE COMPLEMENT
920 0504 BE CMP M ; WRITE O.K. ?
921 0505 2F CMA
922 0506 77 MOV M,A ; RAM RESTORE
923 0507 CA 04FA JZ MEM1
924 050A 2B MEM2: DCX H ; LAST BYTE IN RAM
925 050B 22 40EE SHLD MEMTOP ; SAVE ADDRES
926 050E 3E 17 MVI A,17H ; LIN. KOD 'C'
927 0510 32 40A4 STA LASTC ; LAST CODE
928 0513 3E FF MVI A,0FFH
929 0515 32 40A8 STA FLAG ; ZAKAZ CSTS
930 0518 21 4070 LXI H,MSTAK-20H
931 051B 22 409C SHLD SPSAV
932
933 ; OHLASENI MONITORU
934
935 051E 21 00F3 INIC: LXI H,VERS ; TEXT OHLASENI
936 0521 16 0D MVI D,LVER ; DELKA TEXTU
937 0523 CD 068A CALL TEXT ; TEXT OHLASENI
938 ;------------------------------------
939 ; * VYHODNOCENI POVELU OPERATORA *
940 ;------------------------------------
941
942 0526 31 4090 NEXT: LXI SP,MSTAK ; SET STACK FOR MONITOR
943 0529 21 0526 LXI H,NEXT
944 052C E5 PUSH H ;RET. ADR
945 IF NOT CPM
946 052D 26 30 MVI H,30H ;INTERRUPT ENABLE
947 052F 36 02 MVI M,2
948 ENDIF
949 0531 CD 05DD CALL CRLF
950 0534 3E C3 MVI A,0C3H ; JMP
951 0536 32 4000 STA @R@ ; SET INTERUPT ADR "08CH"
952 0539 21 0313 LXI H,RESTA
'MONITOR SAPI-1 V4.0F' MACRO-80 3.44 09-Dec-81 PAGE 1-17
953 053C 22 4001 SHLD @R@+1
954 053F 0E 2E MVI C,'.'
955 0541 CD 05E4 CALL CO
956 0544 CD 067B CALL CINCR ; POVEL
957 0547 6F XY: MOV L,A ; L-COMMAND
958 0548 E5 PUSH H ; SAVE
959 0549 D6 41 SUI 'A'
960 054B FA 0526 JM NEXT ; ASCII < "A"
961 054E 21 0561 LXI H,CTBL ; ZACATEK COMMAND TABLE
962 0551 01 1802 LXI B,(LCT SHL 8) OR 2
963 0554 B8 INJM@: CMP B
964 0555 D2 0162 JNC ERROR ;OVERFLOW
965 0558 87 INJMP: ADD A ;2*
966 0559 85 ADD L
967 055A 6F MOV L,A
968 055B 7E MOV A,M
969 055C 23 INX H
970 055D 66 MOV H,M
971 055E 6F MOV L,A
972 055F E3 XTHL ;SET HL
973 0560 C9 RET ;START
974
975 ;----------------------------------
976 ; * TABULKA POVELU MOVITORU *
977 ;----------------------------------
978
979 ;
980 0561 014E CTBL: DW ASIGN ; ASSING I/O RUTINE
981 0563 0591 DW EXROM ;B
982 0565 04DC DW BEG ; CLEAR
983 0567 042E DW DISP ; DISPLAY MEMORY
984 0569 0591 DW EXROM ; END OF FILE
985 056B 047A DW FILL ; FILL MEMORY
986 056D 035B DW GOTO ; GOTO WITH BREAK
987 056F 0591 DW EXROM
988 0571 0591 DW EXROM ;I
989 0573 0591 DW EXROM ;J
990 0575 0591 DW EXROM ;K
991 0577 0591 DW EXROM ;L
992 0579 0489 DW MOVE ; MOVE MEM.
993 057B 0591 DW EXROM ; N - BLANK
994 057D 0591 DW EXROM ;O
995 057F 0591 DW EXROM ;P
996 0581 0192 DW QUERY ; Q - MEMTOP & IOBYTE
997 0583 0591 DW EXROM ; READ TAPE
998 0585 049A DW SUBS ; SUBSTITUTE
999 0587 0591 DW EXROM
1000 0589 0591 DW EXROM ;U
1001 058B 0591 DW EXROM
1002 058D 0591 DW EXROM ;WRITE TO TAPE
1003 058F 03A8 DW X ;X - EXAMINE
1004 0018 LCT EQU ($-CTBL)/2
1005
1006
1007 ;
1008 ; EXTEND ROM WITH MONIT-PLUS ?
'MONITOR SAPI-1 V4.0F' MACRO-80 3.44 09-Dec-81 PAGE 1-18
1009 ;
1010 0591 CD 059A EXROM: CALL EP2?
1011 0594 C2 0162 JNZ ERROR ;NO, ERROR
1012 0597 C3 0806 JMP EP2 + 6 ;YES, EXECUTE COMMAND
1013 ;
1014 059A 3A 0800 EP2?: LDA EP2
1015 059D FE C3 CPI 0C3H ;JMP?
1016 059F C9 RET
1017 ;
1018 ;
1019
1020 ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
1021 ; * EXTERNAL RUTINES FOR MONITOR *
1022 ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
1023
1024
1025
1026 ; HIGH NIBBLE
1027 05A0 0F HBYTE: RRC
1028 05A1 0F RRC
1029 05A2 0F RRC
1030 05A3 0F RRC
1031 05A4 E6 0F LBYTE: ANI 0FH
1032 ; PREVOD HEXADECIMALNI CIFRY NA ASCII V "C" REG
1033
1034 05A6 C6 90 HXASC: ADI 90H
1035 05A8 27 DAA
1036 05A9 CE 40 ACI 40H
1037 05AB 27 DAA
1038 05AC 4F MOV C,A
1039 05AD C9 RET
1040
1041 ; SKLADANI ADRES (VSTUP PARAMETRU) DO STACKU, POCET V C-REG
1042
1043 05AE DA 0162 EXPRO: JC ERROR ;# VERS."C" #
1044 05B1 CD 0013 EXPR: CALL EQUAL ; TISK =
1045 05B4 21 0000 LXI H,0
1046 05B7 CD 04B5 EX0: CALL ECHO
1047 05BA 47 EX1: MOV B,A
1048 05BB FE 27 CPI 27H ;'
1049 05BD CA 05F8 JZ EX4
1050 05C0 CD 0667 CALL ASHEX ; HEX CIFRA ?
1051 05C3 DA 05CF JC EX3 ; POSUV "HL" O 4 BITY VLEVO
1052 05C6 29 DAD H
1053 05C7 29 DAD H
1054 05C8 29 DAD H
1055 05C9 29 DAD H
1056 05CA B5 ORA L
1057 05CB 6F MOV L,A
1058 05CC C3 05B7 JMP EX0 ; DALSI ZNAK
1059
1060 05CF 78 EX3: MOV A,B
1061 05D0 CD 067E CALL ANAL
1062 05D3 C2 0162 JNZ ERROR ; NENI HEX CIFRA
1063 05D6 E3 XTHL
1064 05D7 E5 PUSH H
'MONITOR SAPI-1 V4.0F' MACRO-80 3.44 09-Dec-81 PAGE 1-19
1065 05D8 0D DCR C ; CARKA, MEZERA
1066 05D9 C2 05AE JNZ EXPRO ; DALSI ADRESY
1067 05DC D0 RNC ;#VERS."F"#
1068 ;
1069 05DD 0E 0D CRLF: MVI C,CR
1070 05DF CD 05E4 CALL CO
1071 05E2 0E 0A MVI C,LF ; DO CR,LF
1072 ;
1073 05E4 E5 CO: PUSH H
1074 05E5 21 00CB LXI H,COTB
1075 05E8 3A 40ED LDA IOBYT
1076 05EB E6 03 IOCOM: ANI 3
1077 05ED C3 0558 JMP INJMP
1078
1079
1080 05F0 0E 01 EXPRM: MVI C,1
1081 05F2 21 0000 LXI H,0
1082 05F5 C3 05BA JMP EX1
1083 ;
1084 05F8 CD 067B EX4: CALL CINCR ;COMMAND
1085 05FB 47 MOV B,A ;SAVE
1086 05FC CA 05CF JZ EX3
1087 05FF 65 MOV H,L
1088 0600 6F MOV L,A
1089 0601 C3 05F8 JMP EX4
1090
1091 ; IODEF:... DEFINE USER I/O RUTINE
1092
1093 0604 C5 IODEF: PUSH B
1094 0605 E5 PUSH H
1095 0606 21 40EE LXI H,MEMTOP ;NEW FUNCTION
1096 0609 79 MOV A,C ; NUMBER
1097 060A FE 08 CPI 8
1098 060C CA 061E JZ IODEF1
1099 060F F2 0162 JP ERROR
1100 0612 81 ADD C
1101 0613 81 ADD C
1102 0614 4F MOV C,A
1103 0615 06 00 MVI B,0 ; OFFSET
1104 0617 21 40CB LXI H,CILOC ; COMPUTE ADR
1105 061A 09 DAD B
1106 061B 36 C3 MVI M,0C3H ; JMP
1107 061D 23 INX H
1108 061E 73 IODEF1: MOV M,E
1109 061F 23 INX H
1110 0620 72 MOV M,D ; ADR
1111 0621 E1 POP H ; UNSAVE
1112 0622 C1 POP B
1113 0623 C9 RET
1114
1115
1116 ; INKREMENTRUJE "HL" ,KONTROLUJE "HL"=0 NEBO
1117 ; "HL">"DE"...CARRY=1
1118
1119 0624 23 HILO: INX H
1120 0625 7C MOV A,H
'MONITOR SAPI-1 V4.0F' MACRO-80 3.44 09-Dec-81 PAGE 1-20
1121 0626 B5 ORA L
1122 0627 37 STC
1123 0628 C8 RZ ; NAVRAT PO "HL"=0000
1124 0629 7A COMPR: MOV A,D
1125 062A BC CMP H
1126 062B C0 RNZ
1127 062C 7B MOV A,E
1128 062D BD CMP L
1129 062E C9 RET
1130
1131 ; READ ADR
1132
1133 062F 0E 01 RADR: MVI C,1
1134 0631 CD 05B1 CALL EXPR
1135 0634 E1 POP H
1136 0635 C9 RET
1137
1138
1139 ; READ NEW BYTE
1140
1141 0636 C5 RBYT: PUSH B
1142 0637 E5 PUSH H
1143 0638 CD 05F0 CALL EXPRM
1144 063B D1 POP D
1145 063C E1 POP H
1146 063D 73 MOV M,E
1147 063E 78 MOV A,B
1148 063F FE 0D CPI CR
1149 0641 C1 POP B
1150 0642 C9 RET
1151
1152
1153 ; DISPLAY NEW ADR
1154
1155 0643 CD 05DD DNADR: CALL CRLF
1156 0646 CD 064C DADR: CALL DADR0
1157 0649 C3 0697 JMP SPACE
1158
1159
1160 IF SP1A
1161 ; CHEK I/O STATUS BYTE
1162
1163 IOCHK: LDA IOBYT
1164 RET
1165
1166
1167 ; SET I/O STATUS BYTE
1168
1169 IOSET: MOV A,C
1170 STA IOBYT
1171 RET
1172 ENDIF
1173
1174 ; DISPLAY ADDRES INT0 "HL"
1175
1176 064C 7C DADR0: MOV A,H
'MONITOR SAPI-1 V4.0F' MACRO-80 3.44 09-Dec-81 PAGE 1-21
1177 064D CD 0651 CALL DBYT
1178 0650 7D MOV A,L
1179
1180 ; DISPLAY BYTE INT0 ACC
1181
1182 0651 F5 DBYT: PUSH PSW
1183 0652 CD 05A0 CALL HBYTE
1184 0655 CD 05E4 CALL CO
1185 0658 F1 POP PSW
1186 0659 CD 05A4 CALL LBYTE
1187 065C C3 05E4 JMP CO
1188
1189
1190 ; CHEK SIZE RAM MEMORY
1191
1192 065F E5 MEMCK: PUSH H
1193 0660 2A 40EE LHLD MEMTOP
1194 0663 7D MOV A,L
1195 0664 44 MOV B,H
1196 0665 E1 POP H
1197 0666 C9 RET
1198
1199 ; PREVOD ZNAKU ASCII NA HEXADEC
1200
1201 0667 D6 30 ASHEX: SUI '0' ;#VERS."F"#
1202 0669 D8 RC ; <'0'
1203 066A FE 17 CPI 17H ; >'F'
1204 066C 3F CMC
1205 066D D8 RC
1206 066E FE 0A CPI 10 ; '0'..'9'
1207 0670 3F CMC
1208 0671 D0 RNC
1209 0672 FE 11 CPI 11H ; 0AH..10H
1210 0674 D8 RC
1211 0675 D6 07 SUI 7 ; 'A'..'F'
1212 0677 C9 RET
1213
1214
1215 0678 CD 000B CIMIN: CALL MINUS ;-
1216 ;
1217 067B CD 04B5 CINCR: CALL ECHO
1218 067E FE 2C ANAL: CPI ','
1219 0680 C8 ANAL0: RZ
1220 0681 FE 20 CPI ' '
1221 0683 C8 RZ
1222 0684 FE 0D CPI CR
1223 0686 37 STC
1224 0687 C8 RZ
1225 0688 B7 ORA A
1226 0689 C9 RET ; PO CR CARRY=1
1227
1228 ; VYPIS TEXTU - HL ADRESA, D DELKA
1229
1230 068A 4E TEXT: MOV C,M
1231 068B 23 INX H
1232 068C CD 05E4 CALL CO
'MONITOR SAPI-1 V4.0F' MACRO-80 3.44 09-Dec-81 PAGE 1-22
1233 068F 15 DCR D
1234 0690 C2 068A JNZ TEXT
1235 0693 C9 RET
1236
1237 0694 CD 0651 DBYTE: CALL DBYT
1238 0697 0E 20 SPACE: MVI C,' ' ; DISPLAY MEZERY
1239 0699 C3 05E4 JMP CO
1240 ;
1241 ;
1242 ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1243 ; I/O DEVICE
1244 ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1245 ;
1246 ; T.V. PARAM.
1247 0028 WIDTH EQU 40
1248 0018 HEIGHT EQU 24
1249 0040 LINOF EQU 64 ;OFFSET
1250 0018 LREST EQU LINOF - WIDTH
1251 3DE7 TVEND EQU TVBEG + 5E7H
1252 001F ERS EQU 1FH ;ERASE SCREEN
1253 001E EOL EQU 1EH ;ERASE END OF LINE
1254 0011 CTRLQ EQU 11H ;^Q-RESERVE
1255 0010 CTRLP EQU 10H ;^P-LIST
1256 00A0 CURSOR EQU 0A0H ;CODE
1257 001D HOME EQU 1DH ;HOME
1258 ;
1259 ;-------------------------------------------------
1260
1261 069C 21 3800 COINIT: LXI H,TVBEG
1262 069F 22 40A5 SHLD CADR ;SET CURSOR ADR
1263 06A2 0E 1F MVI C,ERS ;CLEAR SCREEN
1264 ;
1265 ;%%%%%%%%%%%%%%%%%%%%%%%%%%
1266 ; CONSOLE OUTPUT
1267 ; <C>...WRITE ON SCREN
1268 ;
1269 06A4 D5 CRT: PUSH D
1270 06A5 E5 PUSH H
1271 06A6 21 073B LXI H,COEX ;RET-ADR
1272 06A9 E5 PUSH H ;PUT TO STACK
1273 06AA 2A 40A5 LHLD CADR ;CLEAR CURSOR
1274 06AD 3A 40A7 LDA CHAR ;ADR RESTORE
1275 06B0 77 MOV M,A ;CHART
1276 06B1 CD 075A CALL COADR ;COMPUTE ADR
1277 06B4 79 MOV A,C
1278 06B5 FE 20 CPI ' ' ;IF ' '...'Z' THEN WRITE
1279 06B7 D2 06DE JNC CRTWR ;ELSE DECODE CONTROL
1280 06BA FE 0D CPI CR ;CHARTS AND DO
1281 06BC CA 0791 JZ CR@ ;CHANGE ON SCREEN
1282 06BF FE 0A CPI LF
1283 06C1 CA 06FC JZ LF@
1284 06C4 FE 1E CPI EOL
1285 06C6 CA 076F JZ EOL@ ;ERASE TO END LINE
1286 06C9 FE 08 CPI BACK
1287 06CB CA 077B JZ BACK@ ;LEFT SHIFT
1288 06CE FE 1D CPI HOME
'MONITOR SAPI-1 V4.0F' MACRO-80 3.44 09-Dec-81 PAGE 1-23
1289 06D0 CA 0796 JZ HOME@ ;LEFT UP
1290 06D3 FE 1F CPI ERS
1291 06D5 CA 072A JZ ERS@
1292 06D8 FE 07 CPI BELL
1293 06DA CA 0218 JZ BEEP
1294 06DD C9 RET
1295 ;
1296 06DE 3A 40E3 CRTWR: LDA MODE
1297 06E1 E6 C0 ANI 0C0H ;MODE
1298 06E3 57 MOV D,A ; SAVE
1299 06E4 79 MOV A,C ;6.BITS
1300 06E5 E6 3F ANI 3FH
1301 06E7 B2 ORA D ;COMPOSITE
1302 06E8 77 MOV M,A ;WRITE!
1303 06E9 D6 C0 SUI 0C0H ;DOUBLE ?
1304 06EB D4 06EE CNC CONXT ;+
1305 06EE CD 075A CONXT: CALL COADR ;COMPUTE NEXT ADR
1306 06F1 7A MOV A,D
1307 06F2 3C INR A
1308 06F3 32 40E9 STA COLUM ;NEW POSITION
1309 06F6 D6 28 SUI WIDTH ;END LINE
1310 06F8 D8 RC ;NO
1311 06F9 32 40E9 STA COLUM ;SET POSITION AND COMPUTE
1312 ; NEXT LINE
1313 06FC 7B LF@: MOV A,E
1314 06FD 3C INR A
1315 06FE FE 18 CPI HEIGHT ;END OF SCREEN?
1316 0700 DA 079C JC LF@1 ;NO
1317 0703 2A 40EA LHLD RESL
1318 0706 26 00 MVI H,0
1319 0708 CD 075D CALL COADR+3 ;FIRST LINE
1320 070B C5 PUSH B
1321 070C 3A 40EA LDA RESL ;LINE COUNTER
1322 070F D6 18 SUI HEIGHT
1323 0711 2F CMA
1324 0712 4F MOV C,A
1325 0713 06 28 ROLL: MVI B,WIDTH
1326 0715 EB XCHG
1327 0716 21 0040 ROLL1: LXI H,LINOF ;OFFSET
1328 0719 19 DAD D
1329 071A 7E MOV A,M
1330 071B 12 STAX D ;COPY
1331 071C 13 INX D ;+
1332 071D 05 DCR B
1333 071E C2 0716 JNZ ROLL1 ;ALL LINE
1334 0721 21 0018 LXI H,LREST ;NEW LINE
1335 0724 19 DAD D
1336 0725 0D DCR C
1337 0726 C2 0713 JNZ ROLL ;NEXT LINE
1338 0729 C1 POP B
1339 ;
1340 072A CD 076F ERS@: CALL EOL@
1341 072D 11 0018 LXI D,LREST
1342 0730 19 DAD D
1343 0731 11 3DE6 LXI D,TVEND-1
1344 0734 CD 0629 CALL COMPR
'MONITOR SAPI-1 V4.0F' MACRO-80 3.44 09-Dec-81 PAGE 1-24
1345 0737 D2 072A JNC ERS@
1346 073A C9 RET
1347 ;
1348 ;
1349 ; "EXIT" AND SET CURSOR
1350 073B CD 075A COEX: CALL COADR ;WRITE CURSOR
1351 073E 3A 40E3 LDA MODE
1352 0741 0F RRC ;CY=1.. LIST
1353 0742 DC 07B9 CC LPR ;PRINT ECHO
1354 0745 7E MOV A,M
1355 0746 32 40A7 STA CHAR ;ADD SAVE CHAR
1356 0749 22 40A5 SHLD CADR
1357 074C 3A 40E3 LDA MODE ;#VERS."F"#
1358 074F E6 20 ANI 20H ;#SUPRESS CURSOR?
1359 0751 C2 0756 JNZ COEX1 ;#
1360 0754 36 A0 MVI M,CURSOR
1361 0756 E1 COEX1: POP H ;UNSAVE
1362 0757 D1 POP D
1363 0758 79 MOV A,C
1364 0759 C9 RET ;END OF CONSOLE OUTPUT
1365
1366 ; SUBROUTINES
1367 ;--------------------------------------------------
1368
1369 075A 2A 40E8 COADR: LHLD LINE ;COMPARE ADR <HL>
1370 075D E5 PUSH H
1371 075E 26 00 MVI H,0
1372 0760 29 DAD H
1373 0761 29 DAD H
1374 0762 29 DAD H
1375 0763 29 DAD H
1376 0764 29 DAD H
1377 0765 29 DAD H ;64*
1378 0766 11 3800 LXI D,TVBEG ;TV-RAM
1379 0769 19 DAD D ;BEGIN LINE
1380 076A D1 POP D ;SET DE
1381 076B 7D MOV A,L ;D-COLUM
1382 076C B2 ORA D ;E-LINE
1383 076D 6F MOV L,A ;HL...ADR
1384 076E C9 RET
1385
1386
1387 ; ERASE FROM CURSOR TO END LINE
1388 076F 36 20 EOL@: MVI M,' '
1389 0771 23 INX H
1390 0772 7D MOV A,L
1391 0773 E6 3F ANI 3FH
1392 0775 FE 28 CPI WIDTH
1393 0777 DA 076F JC EOL@
1394 077A C9 RET
1395
1396 077B 7A BACK@: MOV A,D ;COLUMN:0 ?
1397 077C B7 ORA A
1398 077D C2 078F JNZ BAC@1 ;NO FINST POSITIONS
1399 0780 1C INR E ;IF LINE=0 THEN BEGIN
1400 0781 1D DCR E ;OF SCREEN
'MONITOR SAPI-1 V4.0F' MACRO-80 3.44 09-Dec-81 PAGE 1-25
1401 0782 C8 RZ
1402 0783 3A 40EA LDA RESL ;SAVE "RESERVE" PARTIONS
1403 0786 BB CMP E
1404 0787 C8 RZ ;YES,GO OUT
1405 0788 7B MOV A,E ;NO SET NEW LINE
1406 0789 3D DCR A
1407 078A 32 40E8 STA LINE
1408 078D 3E 28 MVI A,WIDTH
1409 078F 3D BAC@1: DCR A
1410 0790 16 DB 16H ;MVI D,#
1411 0791 AF CR@: XRA A ;CARIG. RETURN
1412 0792 32 40E9 STA COLUM
1413 0795 C9 RET
1414
1415 ;SET CURSOR ON BEGIN "NORMAL" SCREEN
1416 0796 CD 0791 HOME@: CALL CR@ ;NULL
1417 0799 3A 40EA LDA RESL ;"RESERVE" LINE SET
1418 079C 32 40E8 LF@1: STA LINE
1419 079F C9 RET
1420 ;
1421 ; UNDERLINE
1422 07A0 3A 40EA UCMD: LDA RESL ;EMPTY ?
1423 07A3 B7 ORA A
1424 07A4 C8 RZ ;EMPTY
1425 07A5 3D DCR A
1426 07A6 6F MOV L,A
1427 07A7 26 00 MVI H,0
1428 07A9 CD 075D CALL COADR+3
1429 07AC 16 28 MVI D,WIDTH
1430 07AE 7E RESX: MOV A,M ;UNDER LINE
1431 07AF E6 3F ANI 3FH ;ASCII
1432 07B1 B0 ORA B ;PARAM
1433 07B2 77 MOV M,A
1434 07B3 23 INX H
1435 07B4 15 DCR D
1436 07B5 C2 07AE JNZ RESX
1437 07B8 C9 RET
1438 ;**********************************************************
1439 ;
1440 ; LINE PRINTER
1441 ;
1442 07B9 E5 LPR: PUSH H
1443 07BA 21 2C01 LXI H,2C01H
1444 07BD 71 MOV M,C
1445 07BE 25 DCR H
1446 07BF 75 MOV M,L
1447 07C0 24 INR H
1448 07C1 7E LPR1: MOV A,M
1449 07C2 87 ADD A
1450 07C3 F2 07C1 JP LPR1
1451 07C6 25 DCR H
1452 07C7 36 03 MVI M,3
1453 07C9 24 INR H
1454 07CA 7E LPR2: MOV A,M
1455 07CB 87 ADD A
1456 07CC FA 07CA JM LPR2
'MONITOR SAPI-1 V4.0F' MACRO-80 3.44 09-Dec-81 PAGE 1-26
1457 07CF 25 DCR H
1458 07D0 75 MOV M,L
1459 07D1 E1 POP H
1460 07D2 C9 RET
1461 ;
1462 ;
1463 ; PUNCH OUTPUT
1464 ;
1465 07D3 C9 PUN: RET ; EMPTY
1466 07D4 DS 20 ; RESERVA
1467 ;
1468 ; READER INPUT
1469
1470 0030 PA1 EQU 30H
1471 0032 PC1 EQU 32H
1472 0033 CNTR1 EQU 33H
1473 ;
1474 07E8 DB 32 RDR: IN PC1
1475 07EA 07 RLC
1476 07EB 07 RLC
1477 07EC D8 RC ;PRETRZENA PASKA
1478 07ED B7 ORA A
1479 07EE F2 07E8 JP RDR
1480 07F1 DB 30 IN PA1
1481 07F3 C9 RET
1482 ;
1483 ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1484 ORG @R@
1485 ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1486 ; SYSTEM RAM SAPI-1
1487 ;
1488 4000 RST1: DS 21 ;RESTART VECTOR
1489 ;<<... USER & MONITOR STACK
1490 ;
1491 ;
1492 ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1493 ORG @R@+090H
1494 ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1495 ; MONITOR DATA
1496 ;
1497 4090 MSTAK: DS 2 ; SAVE REGISTERS
1498 4092 ACSAV: DS 2
1499 4094 BCSAV: DS 2
1500 4096 DESAV: DS 2
1501 4098 HLSAV: DS 2
1502 409A PCSAV: DS 2
1503 409C SPSAV: DS 2
1504 ;
1505 409E BRAD: DS 2
1506 40A0 INSTR: DS 1
1507 40A1 BRAD2: DS 2
1508 40A3 INST2: DS 1
1509 40A4 LASTC: DS 1 ;LAST CODE "REPEAT"
1510 40A5 CADR: DS 2 ; CURSOR ADR
1511 40A7 CHAR: DS 1 ; CODE
1512 40A8 FLAG: DS 1 ; FLAG MEMBR
'MONITOR SAPI-1 V4.0F' MACRO-80 3.44 09-Dec-81 PAGE 1-27
1513 40A9 LIMIT: DS 2 ; TIME LIMIT FOR AUTO REPEAT
1514 40AB @BT: DS 1
1515 40AC @PED: DS 1
1516 40AD UADR: DS 2 ;USER ADR
1517 40AF SADR: DS 2 ; START ADR
1518 40B1 EADR: DS 2 ; END ADR
1519 40B3 SUM: DS 1
1520
1521 ;*******************************
1522 ;MONITOR PLUS DATA
1523 40B4 JOINT: DS 1
1524 40B5 FNAME: DS 11
1525 40C0 BNO: DS 1 ;BLOCK NUMSER,FILE NUMBER
1526 40C1 BTO: DS 1
1527 40C2 BNI: DS 1 ; --- " ---
1528 40C3 BTI: DS 1
1529 40C4 ADRO: DS 2
1530 40C6 ADRI: DS 2
1531 40C8 PBITM: DS 2
1532 40CA FND: DS 1 ; FIND FLAG
1533
1534 ;-------------------------
1535 ; USER I/O DEVICE
1536 ; IODEF NUMBER
1537 40CB CILOC: DS 3 ; (0)
1538 40CE COLOC: DS 3 ; (1)
1539 40D1 R1LOC: DS 3 ; (2)
1540 40D4 R2LOC: DS 3 ; (3)
1541 40D7 P1LOC: DS 3 ; (4)
1542 40DA P2LOC: DS 3 ; (5)
1543 40DD LILOC: DS 3 ; (6)
1544 40E0 CSLOC: DS 3 ; (7)
1545 ;******************************
1546 ;<< EXTERNE OVLADANE FLAGY: >>
1547 ;******************************
1548 40E3 MODE: DS 1 ;CRT-MODE
1549 40E4 @IF1: DS 1 ;OPEN FLAGS
1550 40E5 @IF2: DS 1
1551 40E6 @OF1: DS 1
1552 40E7 @OF2: DS 1
1553 40E8 LINE: DS 1 ;LINE
1554 40E9 COLUM: DS 1 ;COLUMN
1555 40EA RESL: DS 1 ;RESERVE
1556 40EB UBYTE: DS 1 ;USER BYTE (REALTIME..)
1557 40EC @SFLG: DS 1 ;#0..NO STOP
1558 000A EXSER EQU $-MODE ;EXTERNAL SERVICE
1559 40ED IOBYT: DS 1 ;I/O CONTROL
1560 40EE MEMTOP: DS 2 ;MEMTOP "RAM"
1561
1562 ;-------------------------
1563 ; I/O BUFFERS
1564 40F0 DS 1 ;BLOCK LABEL
1565 40F1 BOUT: DS 255 ;BLOCK LENGHT
1566 41F0 BOEND EQU $
1567 ;
1568 41F0 DS 1 ; BLOCK LABELS
'MONITOR SAPI-1 V4.0F' MACRO-80 3.44 09-Dec-81 PAGE 1-28
1569 41F1 BIN: DS 255 ;BLOCK LENGHT
1570 42F0 BIEND EQU $
1571 ;
1572 42F0 WRNM: DS 11
1573 ;=============================
1574 ORG @R@ + 300H
1575 ;=============================
1576 ; "MAT" ARRAY
1577 4300 DS 0FFH
1578 ;=============================
1579 ORG @R@ + 400H
1580 ;=============================
1581 ; SYSTEM OR USER PROGRAMS
1582 ;---->>>>>>>>>>>
1583 ;
1584 ;
1585 ;
1586 END
'MONITOR SAPI-1 V4.0F' MACRO-80 3.44 09-Dec-81 PAGE S
Macros:
Symbols:
40AB @BT 40E4 @IF1 40E5 @IF2
40E6 @OF1 40E7 @OF2 40AC @PED
4000 @R@ 40EC @SFLG 4092 ACSAV
40C6 ADRI 40C4 ADRO 0002 ALLINT
067E ANAL 0680 ANAL0 0667 ASHEX
014E ASIGN 0159 ASS0 016B ASS1
0175 ASS2 0186 ASS3 078F BAC@1
0008 BACK 077B BACK@ 0002 BATCH
4094 BCSAV 0218 BEEP 04DC BEG
0055 BEGIO 0007 BELL 42F0 BIEND
41F1 BIN 40C2 BNI 40C0 BNO
41F0 BOEND 40F1 BOUT 409E BRAD
40A1 BRAD2 40C3 BTI 40C1 BTO
40A5 CADR 003B CCPM 0001 CCRT
40A7 CHAR 005E CI 02A4 CI1
028B CICO 40CB CILOC 0678 CIMIN
067B CINCR 00D3 CITB 0228 CLCK1
022E CLCK2 0224 CLICK 00FC CMSK
0033 CNTR1 05E4 CO 04B8 COA
075A COADR 073B COEX 0756 COEX1
069C COINIT 04CF COLD 030D COLO
40CE COLOC 40E9 COLUM 0629 COMPR
06EE CONXT 00CB COTB 0000 CPM
000D CR 0791 CR@ 05DD CRLF
06A4 CRT 06DE CRTWR 40E0 CSLOC
01C6 CSTS 01FB CSTS0 01C0 CSTS1
0561 CTBL 0010 CTRLP 0011 CTRLQ
0017 CTRLW 0000 CTTY 00A0 CURSOR
0003 CUSE 0646 DADR 064C DADR0
0651 DBYT 0694 DBYTE 4096 DESAV
0433 DI0 0437 DI1 044B DI2
0447 DIA 042E DISP 0643 DNADR
01FF DTTO? 40B1 EADR 04B5 ECHO
001E EOL 076F EOL@ 0800 EP2
059A EP2? 0013 EQUAL FFFF ERAM
0162 ERROR 001F ERS 072A ERS@
0003 ETX 05B7 EX0 05BA EX1
05CF EX3 05F8 EX4 04BF EXFLG
05B1 EXPR 05F0 EXPRM 05AE EXPRO
0591 EXROM 000A EXSER 0481 FI1
047A FILL 40A8 FLAG 40B5 FNAME
40CA FND 02BC FREE 0392 GO@
0374 GO@BR 035B GOTO 05A0 HBYTE
0018 HEIGHT 0624 HILO 4098 HLSAV
001D HOME 0796 HOME@ 0009 HT
05A6 HXASC 051E INIC 0554 INJM@
0558 INJMP 40A3 INST2 40A0 INSTR
40ED IOBYT 0023 IOCHK 05EB IOCOM
0604 IODEF 061E IODEF1 018B IONEW
002B IOSET 00B3 IOTAB 40B4 JOINT
0265 KBR 0294 KBRD 01E0 KBRS1
01CE KBRST 0243 KEY 0233 KEYIN
'MONITOR SAPI-1 V4.0F' MACRO-80 3.44 09-Dec-81 PAGE S-1
40A4 LASTC 05A4 LBYTE 0040 LCRT
0018 LCT 000A LF 06FC LF@
079C LF@1 40DD LILOC 40A9 LIMIT
40E8 LINE 0040 LINOF 0080 LLPT
003F LMSK 0301 LO 02B6 LONG
00DB LOTB 07B9 LPR 07C1 LPR1
07CA LPR2 0018 LREST 02B9 LSET
0000 LTTY 00C0 LUSE 000D LVER
04FA MEM1 050A MEM2 065F MEMCK
40EE MEMTOP 000B MINUS 0011 MMODE
0490 MO1 40E3 MODE 0100 MONIT
0489 MOVE 4090 MSTAK 0526 NEXT
024E NXKEY 023D NXLIN 40D7 P1LOC
40DA P2LOC 0030 PA1 40C8 PBITM
0032 PC1 409A PCSAV 00CF PMSK
02F5 PO 00EB POTB 0010 PPTR
02AA PRESS 0000 PTTY 07D3 PUN
0020 PUSE1 0030 PUSE2 0192 QUERY
001B QUES 40D1 R1LOC 40D4 R2LOC
062F RADR 4000 RAM 0636 RBYT
07E8 RDR 40EA RESL 0313 RESTA
07AE RESX 0419 RGNAM 02E9 RI
02F0 RICOM 00E3 RITB 00F3 RMSK
0713 ROLL 0716 ROLL1 0004 RPTR
4000 RST1 032E RST10 034A RST20
00CF RSTN 0000 RTTY 0008 RUSE1
000C RUSE2 40AF SADR 01F8 SET80
02C8 SETLST FFFF SP1 0000 SP1A
0697 SPACE 0033 SPCL 409C SPSAV
049D SU1 04AC SU2 049A SUBS
40B3 SUM 0065 TABCOD 0046 TCPM
068A TEXT 3800 TVBEG 3DE7 TVEND
40AD UADR 40EB UBYTE 07A0 UCMD
0012 UDATA 0010 UMODE 0013 URES
0011 USTAT 00F3 VERS 02AC WAIT0
02BE WAIT1 0028 WIDTH 42F0 WRNM
03A8 X 03B6 X0 03BE X1
03C3 X10 03D5 X2 0400 XDIS1
03F6 XDISP 0547 XY
No Fatal error(s)
@BT 1514#
@IF1 1549#
@IF2 1550#
@OF1 1551#
@OF2 1552#
@PED 1515#
@R@ 29# 102 106 110 114 119 124 129 900 951 953 1484
1493 1574 1579
@SFLG 1557#
ACSAV 673 688 754 755 1498#
ADRI 1530#
ADRO 1529#
ALLINT 82#
ANAL 1061 1218#
ANAL0 1219#
ASHEX 249 1050 1201#
ASIGN 264# 980
ASS0 269# 273
ASS1 270 281#
ASS2 286# 295
ASS3 288 296#
BAC@1 1398 1409#
BACK 36# 1286
BACK@ 1287 1396#
BATCH 54#
BCSAV 756 757 1499#
BEEP 278 415# 1293
BEG 897# 982
BEGIO 41# 903
BELL 37# 1292
BIEND 1570#
BIN 1569#
BNI 1527#
BNO 1525#
BOEND 1566#
BOUT 1565#
BRAD 612 657 1505#
BRAD2 666 1507#
BTI 1528#
BTO 1526#
CADR 126 1262 1273 1356 1510#
CCPM 101 131#
CCRT 53#
CHAR 1274 1355 1511#
CI 138 145# 235 849
CI1 411 529 534#
CICO 141 507#
CILOC 208 1104 1537#
CIMIN 264 710 798 836 1215#
CINCR 255 647 686 801 956 1084 1217#
CITB 146 207#
CLCK1 425# 426
CLCK2 428# 429
CLICK 417 423# 554
CMSK 46#
CNTR1 894 1472#
CO 139 209 213 237 852 955 1070 1073# 1184 1187 1232 1239
COA 105 109 113 317 328 734 790 850#
COADR 1276 1305 1319 1350 1369# 1428
COEX 1271 1350#
COEX1 1359 1361#
COINIT 905 1261#
COLD 98 138 234 888#
COLO 205 209 591#
COLOC 206 1538#
COLUM 1308 1311 1412 1554#
COMPR 630 1124# 1344
CONXT 1304 1305#
COTB 205# 1074
CPM 11# 20 92 95 225 351 517 945
CR 34# 217 654 661 726 1069 1148 1222 1280
CR@ 1281 1411# 1416
CRLF 246 671 690 949 1069# 1155
CRT 205 509 592 1269#
CRTWR 1279 1296#
CSLOC 343 1544#
CSTS 143 240 347# 796
CSTS0 371 377 381#
CSTS1 342# 350
CTBL 961 980# 1004
CTRLP 561 1255#
CTRLQ 489 1254#
CTRLW 40# 487
CTTY 52#
CURSOR 1256# 1360
CUSE 55#
DADR 250 1156#
DADR0 1156 1176#
DBYT 251 744 749 835 1177 1182# 1237
DBYTE 774 1237#
DESAV 758 759 1500#
DI0 771# 797 802
DI1 773# 779
DI2 782# 795
DIA 776 780#
DISP 768# 983
DNADR 772 843 1155#
DTTO? 403# 535
EADR 1518#
ECHO 282 849# 1046 1217
EOL 1253# 1284
EOL@ 1285 1340 1388# 1393
EP2 27# 907 1012 1014
EP2? 906 1010 1014#
EQUAL 108# 281 318 646 735 1044
ERAM 25# 911
ERROR 142 143 248 277# 293 702 964 1011 1043 1062 1099
ERS 1252# 1263 1290
ERS@ 1291 1340# 1345
ETX 39#
EX0 1046# 1058
EX1 1047# 1082
EX3 1051 1060# 1086
EX4 1049 1084# 1089
EXFLG 259 870#
EXPR 247 768 808 820 1044# 1134
EXPRM 650 1080# 1143
EXPRO 1043# 1066
EXROM 981 984 987 988 989 990 991 993 994 995 997 999
1000 1001 1002 1010#
EXSER 872 1558#
FI1 812# 814 902
FILL 807# 985
FLAG 367 527 552 929 1512#
FNAME 1524#
FND 1532#
FREE 543# 545
GO@ 648 655 663 671#
GO@BR 649 656#
GOTO 646# 986
HBYTE 1027# 1183
HEIGHT 1248# 1315 1322
HILO 252 775 791 813 827 1119#
HLSAV 599 606 681 760 761 1501#
HOME 1257# 1288
HOME@ 1289 1416#
HT 35#
HXASC 258 1034#
INIC 279 935#
INJM@ 136 963#
INJMP 965# 1077
INST2 668 1508#
INSTR 659 1506#
IOBYT 116 122 301 310 347 571 578 585 904 1075 1559#
IOCHK 116# 141 241
IOCOM 147 574 588 1076#
IODEF 244 1093#
IODEF1 1098 1108#
IONEW 301#
IOSET 121# 142 242
IOTAB 194# 266 309
JOINT 1523#
KBR 207 207 211 486# 488 505
KBRD 486 497 513# 566
KBRS1 361 367#
KBRST 353# 510
KEY 459# 466
KEYIN 372 449# 534 537 544
LASTC 403 548 927 1509#
LBYTE 1031# 1186
LCRT 71#
LCT 962 1004#
LF 38# 217 1071 1282
LF@ 1283 1313#
LF@1 1316 1418#
LILOC 210 1543#
LIMIT 406 408 542 1513#
LINE 1369 1407 1418 1553#
LINOF 1249# 1250 1327
LLPT 72#
LMSK 49#
LO 140 205 239 583#
LONG 405 541#
LOTB 209# 584
LPR 209 591 1353 1442#
LPR1 1448# 1450
LPR2 1454# 1456
LREST 1250# 1334 1341
LSET 413 542#
LTTY 70#
LUSE 73#
LVER 221# 936
MEM1 909# 923
MEM2 916 924#
MEMCK 243 1192#
MEMTOP 925 1095 1193 1560#
MINUS 104# 1215
MMODE 79# 892
MO1 824# 828
MODE 563 565 878 1296 1351 1357 1548# 1558
MONIT 16# 228
MOVE 819# 992
MSTAK 898 930 942 1497#
NEXT 253 642 942# 943 960
NXKEY 461 463 465#
NXLIN 454# 469
P1LOC 213 1541#
P2LOC 214 1542#
PA1 1470# 1480
PBITM 1531#
PC1 1471# 1474
PCSAV 639 652 679 762 1502#
PMSK 48#
PO 140 238 576#
POTB 213# 577
PPTR 65#
PRESS 536# 538
PTTY 64#
PUN 213 1465#
PUSE1 66#
PUSE2 67#
QUERY 309# 996
QUES 112# 277
R1LOC 211 1539#
R2LOC 212 1540#
RADR 656 665 833 1133#
RAM 19# 908
RBYT 717 839 1141#
RDR 211 1474# 1479
RESL 499 1317 1321 1402 1417 1422 1555#
RESTA 485 598# 952
RESX 1430# 1436
RGNAM 687 754#
RI 139 207 236 569#
RICOM 572# 581
RITB 211# 570
RMSK 47#
ROLL 1325# 1337
ROLL1 1327# 1333
RPTR 59#
RST1 1488#
RST10 614# 636
RST20 623 632 634#
RSTN 30# 660 669
RTTY 58#
RUSE1 60#
RUSE2 61#
SADR 1517#
SET80 368 373 379#
SETLST 532 548#
SP1 9# 85
SP1A 10# 856 1160
SPACE 254 315 730 781 1157 1238#
SPCL 126# 245
SPSAV 603 677 763 931 1503#
SU1 834# 844
SU2 838 841#
SUBS 833# 998
SUM 1519#
TABCOD 150# 549
TCPM 134 138#
TEXT 256 937 1230# 1234
TVBEG 26# 1251 1261 1378
TVEND 1251# 1343
UADR 1516#
UBYTE 1556#
UCMD 496 501 1422#
UDATA 77#
UMODE 80# 890
URES 81# 888
USTAT 78#
VERS 217# 221 935
WAIT0 537# 540
WAIT1 544# 547
WIDTH 1247# 1250 1309 1325 1392 1408 1429
WRNM 1572#
X 641 686# 1003
X0 691# 694
X1 689 695#
X10 698# 704
X2 695 706 708# 714 728
XDIS1 705 735#
XDISP 691 708 730#
XY 257 957#
138#
TEXT 256 937 1230
ÚVOD | Novinky | 8 Bitů | Příslušenství | Drobnosti | TTL | Kontakt
SAPI-1 | ONDRA | PMI-80 | PMD-85 | klony PMD-85 | klony SM50/40 | PETR | PLAN-80A | IQ151 | TNS | FK-1 | HVĚZDA | SP 830 | PCS 1-QR6000
ZPS | Technické prostředky | Programové vybavení | Dokumentace