;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; CP/M PROLOG-80 CONFIGURATION FILE ;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; .Z80 START: JP FREESTART## $INIIO:: JP INIIO $ENTED:: JP ENTED $EXIED:: JP EXIED $TABXY:: JP TABXY $CLREOL:: JP CLREOL $INKEY:: JP INKEY $WINK:: JP WINK $EDIKEY:: JP EDIKEY $TSTBREAK:: JP TSTBREAK $PRINT:: JP PRINT $$PRINT:: JP PRINT1 ; END OF VECTORS, DATA AREA FOLLOWS $MINCHR:: DB ' ' $MAXCHR:: DB 0FFH $LINES:: DB 32 $CHARS:: DB 90 $EDICMD:: db 'S'-'@' ;left db 'D'-'@' ; right db 'E'-'@' ; up db 'X'-'@' ; down db 'A'-'@' ; first in line db 'F'-'@' ; last in line db 'R'-'@' ; page up db 'C'-'@' ; page down db 'W'-'@' ; fisrt in file db 'Z'-'@' ; last in file db 'G'-'@' ; delete under cursor db 7fh ; backspace db 'I'-'@' ; insert tab db 'Y'-'@' ; delete current line db 'N'-'@' ; insert line db 'M'-'@' ; cr db 'V'-'@' ; toggle insert/overwrite db 1bh ; end of file / exit editor $CTABLE:: DB 28,28,28,28,28,28,28,28 DB 28,28,28,28,28,28,28,28 DB 28,28,28,28,28,28,28,28 DB 28,28,30,28,28,28,28,28 ; 0-31, ^Z = 30 (EOF) DB 28 ; ' ' DB 26,10,36,6,6,6,12 DB 18,20,6,6,22,6 DB 6,32 ; 33-47 DB 0,0,0,0,0,0,0,0,0,0 ; '0'-'9' DB 6,24,6,6 DB 6,6,6 DB 4,4,4,4,4,4,4,4,4,4 DB 4,4,4,4,4,4,4,4,4,4 DB 4,4,4,4,4,4 ; 'A'-'Z' DB 14,6 DB 16,6 DB 8,6 DB 2,2,2,2,2,2,2,2,2,2 DB 2,2,2,2,2,2,2,2,2,2 DB 2,2,2,2,2,2 ; LOWERCASE LETTERS DB 6,34,6,6 DB 28 ; 127 DB 28,28,28,28,28,28,28,28 ; 80H-87H DB 28,28,28,28,28,28,28,28 ; 88H-8FH DB 28,28,28,28,28,28,28,28 ; 90-98 DB 28,28,28,28,28,28,28,28 ; 98-9F DB 28,28,28,28,28,28,28,28 ; A0-A7 DB 28,28,28,28,28,28,28,28 ; A8-AF DB 28,28,28,28,28,28,28,28 ; B0-B7 DB 28,28,28,28,28,28,28,28 ; B7-BF ; THE FOLLOWING CODES CORRESPOND TO NATIONAL CHARACTER ; SET ACCORDING TO KOI-8 CS2 ALPHABET (CZECH AND SLOVAK) DB 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 ; CX DB 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 ; DX LWC DB 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4 ; EX DB 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4 ; FX UPC iniio: ld hl,initxt jp outit outit: ld a,(hl) cp -1 ret z ld a,(hl) call out inc hl jr outit ented: ld hl,eedtxt jp outit exied: ld hl,exetxt jp outit TABXY: LD A,1BH ; ADR. CALL OUT ld a,'Y' call out ld a,h ; row add a,32 CALL OUT LD A,L add a,32 JP OUT clreol: ld a,27 call out ld a,'K' JP OUT ; CLEAR TO END OF LINE INKEY: LD A,(LASTK) OR A JR Z,TSTKEY PUSH AF XOR A LD (LASTK),A POP AF RET TSTKEY: PUSH HL PUSH DE PUSH BC LD E,-1 LD C,6 ; CONSOLE DIRECT I/O CALL 5 ; BDOS NORMKEY: OR A POP BC POP DE POP HL RET WINK: CALL INKEY RET NZ JR WINK edikey: ld a,27 call out ld a,'e' call out call wink ld c,a ld a,27 call out ld a,'f' call out LD A,C RET TSTBREAK: CALL TSTKEY OR A RET Z cp 3 ; klavesa stop SCF RET Z LD (LASTK),A XOR A RET PRINT: PUSH AF PUSH BC LD C,A AND 0FCH ; MASK OUT D0 AND D1 CP 1CH JR NZ,NOCTL CP C JR Z,NOCTL LD A,C LD (FLAG),A JR NOPRT NOCTL: LD A,(FLAG) RRA JR NC,NODISP LD B,A LD A,C CALL PRINT1 LD A,B NODISP: RRA JR NC,NOPRT PUSH HL PUSH DE ld e,c ld c,5 call 5 POP DE POP HL NOPRT: POP BC POP AF RET print1: OUT: PUSH AF PUSH BC PUSH DE PUSH HL OUT1: LD E,A ld c,6 call 5 POP HL POP DE POP BC POP AF RET FLAG: DB 1DH ; DISPLAY, NO PRINTER LASTK: DB 0 ; NO KEY PRESSED .radix 16 initxt: db 1b,'y',1b,'v',1b,'e',1b,'2',0,1b,'0',1b,'Y',20,20,-1 eedtxt: db 1b,'Y',20,20,1b,'J',1b,'f',-1 exetxt: db 1b,'Y',20,20,1b,'J',1b,'e',7,-1 END