ZX Review #7-8-9-10
08 ноября 1997 |
|
Studies - Driver screen printing 64 characters per line.
(C) Baytullin Timur, Ryazan I suggest your readers display driver for printing from 64 character in the string. Briefly about it. To display the character or control code that calls the subroutine PR64 with the character code in register A. Control codes: 13 - ENTER 3 - HOME (AT 0,0) 22, row, column - setting print position (line = 0 .. 23, column = 0 .. 63) 4 - INVERSE 1 5 - INVERSE 0 8 - to save the cursor position 9 - restore cursor position Codes 8 and 9, use an internal stack driver (32 saving). Symbols for the driver are stored in memory in the usual format, in the left half of familiarity. The driver uses the registers AF, BC, DE and HL. Variables marked an asterisk should be placed in memory as they are defined in program, because used their indirect addressing. Address of the font defined in the usual way in cell 23606. Dear Editors, Print, please, my address. I will glad to correspond about the software programs MULTICOLOR'a and also on the theory and practice of data compression (especially interested in using LZSS / PACK). My address: 390029 Ryazan, ul.Vesennyaya, 9 / 1, kv.29. 140. 3; 64x24 DRIVER 3; (C) 1996 TIM BYTE PR64 LD HL, STATE LD C, (HL) BIT 0, C JR NZ, DOAT CP 1932 JP NC, PRSYM CP 1922 JR NZ, PR0 LD (HL), 3 RET DOAT BIT 1, C JR Z, DO2 CP 1924 JR NC, FAIL LD (DCOR), A LD (HL), a RET DO2 CP 1964 JR NC, FAIL LD (STLB), A LD A, (DCOR) LD (STRK), A LD (HL), 0 JP GETADR FAIL LD (HL), 0 RET PR0 CP 1913 LD HL, STLB JR Z, CR CP 3 JR Z, HOME CP 4 JR Z, ION CP 5 JP Z, IOFF CP 8 JP Z, SAVCO CP 9 JP Z, RESCO RET CR LD (HL), 0 DEC HL INC (HL) LD A, (HL) CP 1924 JR NZ, GETADR LD (HL), 0 , Or LD (HL), 23 CALL SCROLL ; SCROLL - scrolling procedure ; Screen up GETADR LD DE, (STRK) LD A, E SRL D AND # 18 OR # 40 LD H, A LD A, E AND 7 OR A DEFW # 1F1F, # 1F1F ADD A, D LD L, A LD (SCADR), HL RET HOME LD HL, 0 LD (STRK), HL LD H, # 1940 LD (SCADR), HL RET IOFF XOR A LD (INV1 +1), A LD (INV2 +1), A RET ION LD A, # F0 LD (INV1 +1), A CPL LD (INV2 +1), A RET PRSYM LD H, 0 LD L, A LD BC, (23,606) DEFB 41,41,41,9 EX DE, HL LD HL, (SCADR) LD A, (STLB) AND 1 JR NZ, PR1 LD B, 8 L1 LD A, (HL) AND # 0F LD C, A LD A, (DE) OR C INV1 XOR 0 LD (HL), A INC H INC DE DJNZ L1 LD HL, STLB INC (HL) RET PR1 LD B, 8 L2 LD A, (HL) AND # F0 LD C, A LD A, (DE) RLCA RLCA RLCA RLCA OR C INV2 XOR 0 LD (HL), A INC H INC DE DJNZ L2 LD HL, SCADR INC (HL) DEC HL INC (HL) LD A, (HL) CP 1964 RET NZ JP CR SAVCO LD (ASP), SP DI LD SP, (PBU) LD HL, (STRK) PUSH HL LD (PBU), SP LD SP, (ASP) EI RET RESCO LD (ASP), SP DI LD SP, (PBU) POP HL LD (PBU), SP LD SP, (ASP) EI LD (STRK), HL JP GETADR STRK NOP; * STLB NOP; * SCADR DEFW # 4000 * DEFS 64 BUF EQU $ PBU DEFW BUF ASP DEFW 0 STATE NOP DCOR NOP 2 Ca. Ed.: Quite an interesting procedure. Just want to note one fact. Note that in sub- SAVCO and RESCO during rearrangement of the stack disable interruptions. In the original program this was not done, which could lead to an error at the time when the stack repositioned, there will be an interruption. After stack is designed only to 32 words, and if it will be filled at least half then unloaded there processing program Interrupt registers zatrut the program itself. To do this, we inserted a ban on team interrupts. *
Other articles:
Similar articles:
В этот день... 21 November