;z80 ;zx-spectrum ;assembler MAIN "STS*",#C6 LD A,"0 LD (DD_NAME+7),A LD HL,STANDART+2 LD (HL),5 PUSH HL CALL WINDOW DB 5,6 DB 14,5,18,8,"Dis","k"+#80 ;DB 11,8 ;DB 20 ;DD_NAME DB "DisName0 ","C"+W DB 23,7,4,1 DD_MEND DW 0 DB 09,7,17,0;START POP HL LD (HL),9 DD_REINPUT LD DE,DD_MSTART LD HL,#70F CALL INPUT_W_D PUSH HL LD (DD_LSTART),HL LD DE,DD_MEND LD HL,#71B CALL INPUT_W_D LD (DD_LEND),HL POP BC XOR A SBC HL,BC JR C,DD_REINPUT LD (DD_AREA),A ;LD HL,#814 ;LD DE,DD_NAME ;LD C,7 ;CALL INPUT_REWR CALL RES_INP ddbuf2=$+1 LD HL,DD_BUF+#200;#C200 LD (HL),0 ;v5.6 LD (DD_LAB_ADR),HL locend=$+1 LD HL,LOCEND_BUF LOCAL_CKL PUSH HL LD HL,DD_AREA INC (HL) DD_RELOCAL CALL WINDOW DB 5,7 ;DB 14,9,"Local",6,2 DB 16,9,6,2 DD_AREA DB 0 DB 09,11,17,1 DD_LSTART DW 0 DB 23,11,4,1 DD_LEND DW 0 DD_MODE_T ;DB 15,12 ;DB "MODE " DB 18,12 DD_MODE DB 18," ",0 DDLE_R LD DE,DD_LEND LD HL,#B1B CALL INPUT_W_D LD DE,(DD_LSTART) AND A SBC HL,DE JR C,DDLE_R LD HL,(DD_MEND) SBC HL,BC JR C,DDLE_R PUSH BC DD_REMODE LD HL,DD_MODE CALL XOR_1HL LD HL,DD_MODE_T CALL PRINT_T_AT CALL INKEY LD A,E SUB #D JR NZ,DD_REMODE LD A,(DD_MODE) RRCA JR C,NO_MAK_LAB ;DD_MAK_LAB POP BC XOR A LD (PR_W_JR),A LD BC,(DD_LSTART) LD HL,0 DD_LAB_ADR=$-2 DD_LAB_CKL LD (HL),A PUSH HL LD H,A,L,A LD (NEW_PC),HL;=0 CALL IPRDIS_INS LD C,L,B,H LD DE,(NEW_PC) LD A,D OR E JR Z,NO_RANGE LD HL,(DD_MSTART) SCF SBC HL,DE JR NC,NO_RANGE LD HL,(DD_MEND) XOR A SBC HL,DE JR C,NO_RANGE PUSH BC LD C,E,B,D LD HL,(ddbuf2) OLDLAB_TST LD A,(HL) AND A JR Z,NEW_LABEL INC HL LD E,(HL) INC HL LD D,(HL) INC HL EX DE,HL SBC HL,BC EX DE,HL JR NZ,OLDLAB_TST POP BC JR NO_RANGE NEW_LABEL LD E,C,D,B POP BC,HL LD (HL),2 ;2 - LABEL NOT DEFINE PR ;1 - LABEL DEFINE ;0 - EDUP OF TABLE INC HL LD (HL),E INC HL LD (HL),D INC HL POP DE PUSH DE,HL,BC ;Cf=0 SBC HL,DE JP NC,DD_CANCEL;CANCEL? LD HL,#D12 CALL TST_PRW POP BC NO_RANGE LD HL,(DD_LEND) XOR A SBC HL,BC POP HL ;LD (HL),A JR NC,DD_LAB_CKL LD (DD_LAB_ADR),HL LD A,PR_W-PR_W_JR-1 LD (PR_W_JR),A LD A,-1 JR MAK_LAB_END NO_MAK_LAB ;BC=DD_LEND REDFBL LD HL,#C1B LD A,8 CALL INPUT_B DEC A JP M,REDFBL INC A POP BC;=DD_LEND INC BC MAK_LAB_END POP HL LD (HL),A DEC HL LD (HL),C DEC HL LD (HL),B DEC HL LD (DD_LSTART),BC EX DE,HL LD HL,(DD_MEND) LD (DD_LEND),HL XOR A SBC HL,BC EX DE,HL JP NC,LOCAL_CKL LD (HL),A ;LOC_END_STACK LD (FLEN+1),A LD HL,DD_CANCEL LD (TR_CANCEL),HL CALL TEST_ROOM LD A,svMODE ;#CA;2D73;SAVE LD (SL_MODE),A LD HL,(#FFE1) LD (TRSEC),HL;FirstTrSec LD HL,PUSH_BUF LD (PR),HL ddbuf=$+1 LD HL,DD_BUF LD (PR_BUF_ADR),HL XOR A LD (DD_SEC),A LD HL,(locend) LD BC,0 DD_MSTART=$-2 DISLOC_CKL LD A,(HL) AND A JP Z,DD_END DEC HL LD E,(HL) DEC HL LD D,(HL) LD (DD_LNEXT),DE DEC HL PUSH HL LD (DFB_LEN),A INC A JP Z,DD_DIS DD_DEF_CKL PUSH BC CALL PRINT_LW;Cf=1-NO_LAB POP BC PUSH BC CALL NC,SET_1_LAB LD DE,DEFB_TXT CALL PRINT LD B,8 DFB_LEN=$-1 POP DE DFB_CKL PUSH BC CALL RES_IO;A<=(DE) INC DE PUSH DE CALL PRINT_B;Cf=0 POP DE POP BC LD HL,0 DD_LNEXT=$-2 XOR A SBC HL,DE JR Z,DD_DB_END LD A,B DEC A LD A,", CALL NZ,PR DJNZ DFB_CKL DD_DB_END PUSH DE IF eol CALL PREOL ELSE LD DE,EOL_TXT CALL PRINT ENDIF POP BC PUSH BC CALL TEST_EQU CALL DD_NEXTSEC POP BC LD HL,(DD_LNEXT) XOR A SBC HL,BC JR NZ,DD_DEF_CKL JR DISL_C_END DD_DIS ;BC=LOC_START XOR A LD (PR_W_JR),A DD_DIS_CKL PUSH BC CALL PRINT_LW POP BC CALL NC,SET_1_LAB LD A,9 ;LD (DD_R_SYM),A ;LD (DD_R_SYM3),A CALL PR LD HL,(PR_BUF_ADR) LD (DIS_PR_ADR),HL CALL DIS_INSIDE;BC<=DIS_ADR ;HL=>NEXT_ADR PUSH HL IF eol CALL PREOL ELSE LD DE,EOL_TXT CALL PRINT ENDIF POP BC PUSH BC CALL TEST_EQU CALL DD_NEXTSEC POP BC LD HL,(DD_LNEXT) SCF SBC HL,BC JR NC,DD_DIS_CKL DISL_C_END POP HL JP DISLOC_CKL TST_PRW CALL _8020 JP C,PRINT_W JR DD_CANCEL DD_END CALL DD_SAVE DD_CANCEL ;LD A,32 ;LD (DD_R_SYM),A ;LD (DD_R_SYM3),A LD HL,ENT_TXT;ASM_BUFFER=FF80 LD (DIS_PR_ADR),HL LD HL,SL_FILE3 LD (Write_CALL),HL LD HL,CANCEL LD (TR_CANCEL),HL LD A,PR_W-PR_W_JR-1 LD (PR_W_JR),A LD A,'BUFFER LD (PR_BUF_ADR+1),A LD HL,#21C5 LD (PR),HL XOR A LD (PRINT+1),A JP CANCEL PUT_TRSEC LD HL,0 DD_L_TRSEC=$-2 LD (TRSEC),HL RET SET_1_LAB ;BC=LABEL_ADR LD HL,(ddbuf2) S1L_CKL LD A,(HL) AND A RET Z INC HL LD E,(HL) INC HL LD D,(HL) INC HL EX DE,HL SBC HL,BC EX DE,HL JR NZ,S1L_CKL DEC HL,HL,HL LD (HL),1;DEC(HL) RET TEST_EQU ;BC=PC_ADR LD HL,(ddbuf2) TEQ_CKL LD A,(HL) AND A RET Z INC HL LD E,(HL) INC HL LD D,(HL) INC HL EX DE,HL SBC HL,BC EX DE,HL JR NC,TEQ_CKL DEC A JR Z,TEQ_CKL PUSH HL,BC DEC HL LD B,(HL) DEC HL LD C,(HL) DEC HL LD (HL),A;=1 PUSH BC CALL PRINT_LW_2;!!! LD DE,EQU_TXT CALL PRINT POP DE,HL LD C,L,B,H AND A SBC HL,DE LD A,L CALL PRINT_B IF eol CALL PREOL ELSE LD DE,EOL_TXT CALL PRINT ENDIF POP HL JR TEQ_CKL DD_NEXTSEC RET ;NOP LD A,#C9 LD (DD_NEXTSEC),A;!! LD HL,#21C5 LD (PR),HL ;выше то же LD HL,#D12 CALL AT CALL TST_PRW LD HL,PUSH_BUF LD (PR),HL CCC LD HL,(ddbuf) PUSH HL LD B,1 CALL LD_SV_SEC LD (DD_L_TRSEC),DE;=TRSEC ;LD A,D ;CP 160 ;JP NC,DD_CANCEL ;CALL RES_INP ;! ;ddbuf1=$+1 LD HL,DD_BUF+#100 POP DE ;DD_BUF LD BC,#100 LDIR LD HL,PR_BUF_ADR+1 DEC (HL);=#C0XX LD HL,DD_SEC LD A,95;MAX_FILE_LEN INC (HL) CP (HL) RET NZ DD_SAVE IFN eof LD DE,EOF_TXT CALL PRINT ENDIF LD A,(PR_BUF_ADR) AND A JR Z,DD_NoLSec XOR A LD (DD_NEXTSEC),A CALL DD_NEXTSEC;LAST_SEC DD_NoLSec LD HL,DD_NAME LD DE,FNAME_TXT LD BC,8 LDIR INC DE LD A,"C LD (DE),A;EXT_TXT LD HL,(PR_BUF_ADR) LD A,0 DD_SEC=$-1 LD H,A DEC L INC HL DEC H LD (FLEN),HL LD HL,PUT_TRSEC LD (Write_CALL),HL CALL Write CALL SAVE_1_SEC LD HL,(DD_L_TRSEC) LD (TRSEC),HL LD HL,(ddbuf) LD (PR_BUF_ADR),HL LD HL,DD_NAME+7 INC (HL) XOR A LD (DD_SEC),A RET EQU_TXT DB "=$-",0 DEFB_TXT DB 9,"DB",32,0 IFN eol EOL_TXT DB #D,#A,0 ENDIF IFN eof EOF_TXT DB #D,#A,#1A,0 ENDIF