; LAST UPDATE: 31.05.2025 savelij LineBuffer := WorkBuffer+0x300 ;[]==========================================================[] JP FileViewer DZ FLEX_VERS.VIEWER FileViewer CALL LoadFile RET C LD IX,ViewingFile SUB A LD (ViewMode),A LD (ASCIIaddX),A LD HL,0x0000 LD (FileShift),HL LD (FileShift+2),HL LD L,(IX+28) LD H,(IX+29) LD (FileLenght),HL LD L,(IX+30) LD H,(IX+31) LD (FileLenght+2),HL CALL InitViewScr ViewerBegin CALL InitStatusLine CALL InitVProc CALL PrintVPage ViewerLoop LD A,(ViewMode) OR A JR NZ,HViewLoop TViewLoop LD IX,ASCIItab CALL JUMPS.TestCoords SPDSS DSSF.SCANKEY ;Ожидаем нажатия клавиш JR Z,TViewLoop LD A,E ;Е-ASCII код CP 0x1B ;Esc JP Z,ViewerExit OR A JR NZ,TViewLoop ;Ждем функцион.клавиши LD A,D CP 0x44 JP Z,ViewerExit LD HL,TViewLoop PUSH HL CP 0x3B JP Z,About CP 0x3C JP Z,ChASCIImode CP 0x3E JP Z,ChViewer ;Просмотр в HEX CP 0x42 JP Z,ChCodePage ;Смена кодовой страницы WIN/DOS/KOI CP 0x41 JP Z,FVPrintFile CP 0x54 JP Z,ScrollLeft CP 0x56 JP Z,ScrollRght CP 87 ;Home JP Z,THome CP 81 ;End JP Z,TEnd CP 88 ;Стрелка вверх JP Z,TLineUp CP 82 ;Стрелка вниз JP Z,TLineDwn CP 89 ;PageUp JP Z,TPageUp CP 83 ;PageDown JP Z,TPageDwn LD A,B AND 0x30 CP 0x30 RET Z BIT 5,B RET Z LD A,D AND 0x7F CP 0x57 ;Ctrl+PageUp JP Z,TBegFile ;в начало файла CP 0x51 ;Ctrl+PageDown JP Z,TEndFile ;в конец файла CP 0x19 ;Ctrl+P JP Z,FVPrintFile RET ;-------------------------------------------------------------- HViewLoop LD IX,HEXtab CALL JUMPS.TestCoords SPDSS DSSF.SCANKEY ;Ожидаем нажатия клавиш JR Z,HViewLoop LD A,E ;Е-ASCII код CP 0x1B ;Esc JP Z,ViewerExit OR A JR NZ,HViewLoop ;Ждем функцион.клавиши LD A,D ; CP 0x44 ;F10 JP Z,ViewerExit LD HL,HViewLoop PUSH HL CP 0x3B JP Z,About CP 0x3E ;F4 JP Z,ChViewer ;Просмотр в тексте CP 0x3F ;F5 JP Z,HGoTo ;Переход на адрес пользователя CP 0x41 JP Z,FVPrintFile CP 88 ;Стрелка вверх JP Z,FVHLineUp CP 82 ;Стрелка вниз JP Z,HLineDwn CP 89 ;PageUp JP Z,FVHPageUp CP 83 ;PageDown JP Z,HPageDwn LD A,B AND 0x30 CP 0x30 RET Z BIT 5,B RET Z LD A,D AND 0x7F CP 0x57 ;Ctrl+PageUp JP Z,HBegFile ;в начало файла CP 0x51 ;Ctrl+PageDown JP Z,HEndFile ;в конец файла CP 0x19 ;Ctrl+P JP Z,FVPrintFile RET ;[]----------------------------------------------------------[] ChViewer LD HL,ViewerBegin EX (SP),HL SUB A LD (ASCIIaddX),A LD A,(ViewMode) XOR 0x01 LD (ViewMode),A RET NZ LD HL,(FileShift) LD DE,(FileShift+2) INC HL LD A,H OR L JR NZ,.L1 INC DE .L1 CALL SearchUp LD (FileShift),HL LD (FileShift+2),DE RET ;[]==========================================================[] PrintVPage LD A,(ViewMode) OR A JP NZ,PrnHEXpage JP PrnASCIIpage ;[]==========================================================[] ViewingFile DUPL 0x30,0 ViewMode DEFB 0x00 ASCIImode DEFB 0x01 ASCIIaddX DEFB 0x00 EmptyLines DEFB 0x00 FileLenght DUPL 4,0 ; Длина файла (32бит) FileShift DUPL 4,0 ; Смещение от начала файла (32бит) TempShift DUPL 4,0 ; Временная ячейка смещения (32бит) FVNextShift DUPL 4,0 ; Следующая страница для ASCII (32бит) FVMemIndef DEFB 0x00 FHandle DEFB 0x00 FVReadLen DUPL 4,0 ;[]==========================================================[] ViewerExit LD A,(FVMemIndef) SPDSS DSSF.FREEMEM OR A RET ;[]==========================================================[] LoadFile CALL JUMPS.SetClock LD DE,ViewingFile ; SPDSS DSSF.F_FIRST,1,0x37 SPDSS DSSF.F_FIRST,1, DIR.M_Archive + \ DIR.M_Dir + \ DIR.M_System + \ DIR.M_Hidden + \ DIR.M_ReadOnly PUSH AF CALL C,JUMPS.DOSError POP AF JP C,LoadExit ; LD HL,ViewingFile+33 ; LD A,(HL) ;LoadFl0 CALL FVCorrBigChar ; LD (HL),A ; INC HL ; LD A,(HL) ; OR A ; JR NZ,LoadFl0 LD IX,ViewingFile LD H,(IX+28) LD A,(IX+29) LD E,(IX+30) LD D,(IX+31) LD L,0x00 SLA A RL E RL D RL L SLA A RL E RL D RL L OR H LD H,0x00 EX DE,HL JR Z,.L1 INC HL .L1 LD A,H OR L JR NZ,LoadFl1 INC HL LoadFl1 LD A,D OR E LD A,0x1E PUSH AF CALL NZ,JUMPS.DOSError ;!!!!!!!!!!!! Нет памяти POP AF SCF JP NZ,LoadExit PUSH HL SPDSS DSSF.INFOMEM POP DE LD L,C LD H,B OR A SBC HL,DE LD A,0x1E PUSH DE PUSH AF CALL C,JUMPS.DOSError ;!!!!!!!!!!!! Нет памяти POP AF POP DE JP C,LoadExit LD IX,ProcessView LD (IX+PROC.MAXL1),E LD (IX+PROC.MAXH1),D SUB A LD (IX+PROC.MAXL2),A LD (IX+PROC.MAXH2),A PUSH DE CALL JUMPS.InitProcess POP DE LD B,E SPDSS DSSF.GETMEM LD (FVMemIndef),A LD HL,PagesList SPBIOS BIOSF.GETMEMBLKPAGES MAKEWINDOW WINSUBOBJ.STORE W_MAIN 160,88,320,48 W_FILL 4,2,312,10,COLORI.BLACK W_TEXT 112,3,COLORI.WHITE,"FN File Viewer v\{FLEX_VERS.VIEWER}" W_TEXT 8,16,COLORP.HIGHGRAY,"Reading:" W_BORDER 16,28,288,12 W_FILL 18,29,284,10,COLORI.WHITE W_END SPDSS DSSF.CURDISK LD HL,WorkBuffer ADD A,"A" LD (HL),A INC HL LD (HL),":" INC HL PUSH HL SPDSS DSSF.CURDIR POP HL SUB A .L2 INC HL CP (HL) JR NZ,.L2 DEC HL LD A,0x5C CP (HL) INC HL JR Z,.L3 LD (HL),A INC HL .L3 EX DE,HL LD HL,ViewingFile+33 SUB A .L4 LDI CP (HL) JR NZ,.L4 LD (DE),A LD IX,0x0100 LD HL,WorkBuffer LD DE,0x00D8 LD BC,0x0068 LD A,0x80 CALL JUMPS.PrnRangPathL LD HL,ViewingFile+33 SPDSS DSSF.OPEN,,1 PUSH AF CALL C,JUMPS.DOSError POP AF JP C,NoRead LD (FHandle),A LD IX,ViewingFile LD L,(IX+28) LD H,(IX+29) LD (FVReadLen),HL LD L,(IX+30) LD H,(IX+31) LD (FVReadLen+2),HL SETPORT WINSP.Y_PORT,0xC0 GETPORT WINSP.CPU1 PUSH AF LD HL,PagesList LD A,(HL) .ReadLp1 INC HL PUSH HL SETPORT WINSP.CPU1,,0 SPDSS DSSF.SCANKEY LD HL,0x011B OR A SBC HL,DE JP Z,ReadAbort LD HL,(FVReadLen) LD DE,(FVReadLen+2) LD BC,0x4000 OR A SBC HL,BC LD B,0x00 EX DE,HL SBC HL,BC EX DE,HL JR C,.ReadEnd LD (FVReadLen),HL LD (FVReadLen+2),DE LD HL,0x4000 LD DE,0x4000 LD A,(FHandle) SPDSS DSSF.READ CALL FVNextProcess POP HL LD A,(HL) CP 0xFF JR NZ,.ReadLp1 POP AF SETPORT WINSP.CPU1,,0 JR ReadExit .ReadEnd LD HL,0x4000 LD DE,(FVReadLen) LD A,D OR E JR Z,ReadEn1 LD A,(FHandle) SPDSS DSSF.READ CALL FVNextProcess ReadEn1 POP HL POP AF SETPORT WINSP.CPU1,,0 ReadExit LD A,(FHandle) SPDSS DSSF.CLOSE OR A LoadExit HALT HALT WINDOWCLOSE PUSH AF CALL JUMPS.SetMouse POP AF RET ReadAbort POP HL POP AF SETPORT WINSP.CPU1,,0 NoRead LD A,(FVMemIndef) SPDSS DSSF.FREEMEM SCF JR LoadExit FVNextProcess LD IX,ProcessView LD L,(IX+PROC.CURL1) LD H,(IX+PROC.CURH1) INC HL LD (IX+PROC.CURL1),L LD (IX+PROC.CURH1),H LD A,H OR L JR NZ,.NextPr1 LD L,(IX+PROC.CURL2) LD H,(IX+PROC.CURH2) INC HL LD (IX+PROC.CURL2),L LD (IX+PROC.CURH2),H .NextPr1 CALL JUMPS.PrnProcess RET ;[]----------------------------------------------------------[] ProcessView DEFW 0x00B2 DEFW 0x0075 DEFW 0x011C DEFW 0x0000 DEFW 0x0000 DEFW 0x0000 DEFW 0x0000 DEFW 0x0000 DEFW 0x0000 DEFB 0x4F ;FVCorrBigChar CP 0x41 ; RET C ; CP 0x5B ; JR NC,.CorrCh1 ; SET 5,A ; RET ;.CorrCh1 CP 0x80 ; RET C ; CP 0xA0 ; RET NC ; SET 5,A ; CP 0x90 ; RET C ; SET 6,A ; RES 4,A ; RET ;[]==========================================================[] InitViewScr LD HL,FVFLen LD B,0x10 LD A,0x20 .L1 LD (HL),A INC HL DJNZ .L1 LD HL,FVFClast LD B,0x05 .L2 LD (HL),A INC HL DJNZ .L2 LD DE,FVFLen LD IX,ViewingFile LD L,(IX+28) LD H,(IX+29) LD C,(IX+30) LD B,(IX+31) CALL JUMPS.ConvNumTxt32 LD A,0x20 LD (DE),A INC DE LD HL,FVBytes LD BC,0x0005 LDIR LD DE,FVFData CALL FVGetData LD DE,FVFTime CALL FVGetTime LD L,(IX+26) LD H,(IX+27) LD DE,FVFClast CALL JUMPS.ConvNumTxt16 LD HL,FVFAtributs LD DE,FVFAttrib LD C,(IX+32) LD B,0x08 InitVS0 RL C LD A,"-" JR NC,.L3 LD A,(HL) .L3 LD (DE),A INC HL INC DE DJNZ InitVS0 MAKEWINDOW WINSUBOBJ.NOSTORE W_MAIN 0,0,640,256 W_FILL 4,2,632,10,COLORI.BLACK W_TEXT 8,3,COLORI.WHITE," FN File Viewer v\{FLEX_VERS.VIEWER}" W_HORIZLINE 0,13,640 W_TEXT 8,17,COLORP.HIGHGRAY,"Viewing:" W_VERTICLINE 574,16,10 W_HORIZLINE 0,27,640 W_HORIZLINE 0,227,640 W_FILL 0,28,640,200,COLORI.PANEL W_TEXT 8,231,COLORP.HIGHGRAY,"Len: " FVFLen EQU $ - STRLEN(" ") - 1 W_VERTICLINE 160,230,10 W_TEXT 172,231,COLORP.HIGHGRAY,"Create data: " FVFData EQU $ - STRLEN(" ") - 1 FVFTime EQU $ - STRLEN(" ") - 1 W_VERTICLINE 336,230,10 W_TEXT 348,231,COLORP.HIGHGRAY,"First cluster: " FVFClast EQU $ - STRLEN(" ") - 1 W_VERTICLINE 480,230,10 W_TEXT 492,231,COLORP.HIGHGRAY,"File attribute: " FVFAttrib EQU $ - STRLEN(" ") - 1 W_END SPDSS DSSF.CURDISK LD HL,WorkBuffer ADD A,"A" LD (HL),A INC HL LD (HL),":" INC HL PUSH HL SPDSS DSSF.CURDIR POP HL SUB A .L4 INC HL CP (HL) JR NZ,.L4 DEC HL LD A,0x5C CP (HL) INC HL JR Z,.L5 LD (HL),A INC HL .L5 EX DE,HL LD HL,ViewingFile+33 SUB A .L6 LDI CP (HL) JR NZ,.L6 LD (DE),A LD IX,0x0200 LD HL,WorkBuffer LD DE,0x0034 LD BC,0x0011 LD A,0x80 CALL JUMPS.PrnRangPathL LD HL,0x01FC LD DE,0x0003 LD B,0x08 EXX LD HL,0x022E LD DE,0x0003 LD B,0x08 EXX LD A,0x02 CALL JUMPS.SetCMOSPrint RET FVFAtributs DEFB "--ad-shr" ;Дата FVGetData EX DE,HL LD A,(IX+24) AND 0x1F CALL FVGet8Bit LD (HL),"." INC HL LD A,(IX+24) LD C,(IX+25) LD B,5 .L1 SRL C RRA DJNZ .L1 AND 0x0F CALL FVGet8Bit LD (HL),"." INC HL LD A,(IX+25) ;Год SRL A ADD A,80 .L2 SUB 100 JR NC,.L2 ADD A,100 ;Год CALL FVGet8Bit EX DE,HL RET ;Время FVGetTime EX DE,HL LD A,(IX+23) ;Часы AND 0xF8 RRA RRA RRA CALL FVGet8Bit LD (HL),":" INC HL LD A,(IX+22) LD C,(IX+23) LD B,5 .L1 SRL C RRA DJNZ .L1 AND 0x3F CALL FVGet8Bit EX DE,HL RET FVGet8Bit LD B,0x2F .L1 INC B SUB 10 JR NC,.L1 ADD A,10 LD (HL),B INC HL ADD A,"0" LD (HL),A INC HL RET FVBytes DEFB "bytes" ;[]==========================================================[] InitStatusLine LD A,(ViewMode) OR A JP NZ,HEXstatus ASCIIstatus LD HL,UnWrapT LD DE,0x005E LD A,(ASCIImode) OR A JR Z,.L1 LD HL,WrapT LD DE,0x0064 .L1 LD (ASCIIx),DE LD DE,ASCIIm LD BC,0x0009 LDIR CALL InitCodePage MAKEWINDOW WINSUBOBJ.WOBIND W_HORIZLINE 0,241,640 W_FILL 2,243,636,12,COLORI.HIGHGRAY W_HORIZLINE 2,255,638 W_BUTTON 0,242,80,14 W_TEXT 18,245,COLORP.HIGHGRAY,"F1 About" W_BUTTON 80,242,80,14 W_TEXT 94,245,COLORP.HIGHGRAY,"F2 UnWrap" ASCIIx: EQU $ - STRLEN("F2 UnWrap") - 6 ASCIIm: EQU $ - STRLEN("F2 UnWrap") - 1 W_BUTTON 160,242,80,14 W_TEXT 184,245,COLORP.HIGHGRAY,"F4 Hex" W_BUTTON 400,242,80,14 W_TEXT 422,245,COLORP.HIGHGRAY,"F7 Print" W_BUTTON 480,242,80,14 W_TEXT 504,245,COLORP.HIGHGRAY,"F8 DOS" ASCIIenc: EQU $ - STRLEN("DOS") - 1 W_BUTTON 560,242,80,14 W_TEXT 580,245,COLORP.HIGHGRAY,"F10 Quit" W_END RET UnWrapT DEFB "F2 UnWrap" WrapT DEFB "F2 Wrap " EncDos: DEFB "DOS" EncWin: DEFB "WIN" EncKoi: DEFB "KOI" HEXstatus MAKEWINDOW WINSUBOBJ.WOBIND W_HORIZLINE 0,241,640 W_FILL 2,243,636,12,COLORI.HIGHGRAY W_HORIZLINE 2,255,638 W_BUTTON 0,242,80,14 W_TEXT 18,245,COLORP.HIGHGRAY,"F1 About" W_BUTTON 160,242,80,14 W_TEXT 182,245,COLORP.HIGHGRAY,"F4 ASCII" W_BUTTON 240,242,80,14 W_TEXT 258,245,COLORP.HIGHGRAY,"F5 Go to" W_BUTTON 400,242,80,14 W_TEXT 422,245,COLORP.HIGHGRAY,"F7 Print" W_BUTTON 560,242,80,14 W_TEXT 580,245,COLORP.HIGHGRAY,"F10 Quit" W_END RET ;[]==========================================================[] About MAKEWINDOW WINSUBOBJ.STORE W_MAIN 160,72,320,85 W_FILL 4,2,312,10,COLORP.BLACK W_TEXT 144,3,COLORI.WHITE,"About" W_TEXT 96,18,COLORP.HIGHGRAY,"Flex Navigator File Viewer" W_TEXT 144,28,COLORP.HIGHGRAY,"v\{FLEX_VERS.VIEWER}" W_TEXT 18,40,COLORP.HIGHGRAY,"Programming: (C)2000 Enin Anton" W_TEXT 92,50,COLORP.HIGHGRAY,"(C)2021 Mikhaltchenkov Dmitry" W_BUTTON 124,66,72,14 W_TEXT 154,69,COLORP.HIGHGRAY,"Ok" W_END AboutLoop LD IX,FVAboutTab CALL JUMPS.TestCoords SPDSS DSSF.SCANKEY JR Z,AboutLoop LD A,B OR A JR NZ,AboutLoop LD A,E CP 0x1B JR Z,AboutExt CP 0x0D JR Z,AboutExt RES 5,A CP "O" JR NZ,AboutLoop AboutExt WINDOWCLOSE RET ;[]==========================================================[] ScrollSCRup LD DE,0x241C JR ScrlSCRDnUp ScrollSCRdown LD DE,0x1C24 ;На вход: ; D - Y откуда ; Е - Y куда ScrlSCRDnUp DI PUSH DE SPMOUSE MOUSEF.REFRESH POP DE GETPORT WINSP.CPU1 PUSH AF SETPORT WINSP.CPU1,0x50 LD HL,0x4000 LD BC,320 ACCEL ACCELCMD.SET_BUFFER LD A,0xC0 ACCEL ACCELCMD.OFF ScSCRN1 LD A,D SETPORT WINSP.Y_PORT,,0 ACCEL ACCELCMD.COPY_VERT LD A,(HL) ACCEL ACCELCMD.OFF LD A,E SETPORT WINSP.Y_PORT,,0 ACCEL ACCELCMD.COPY_VERT LD (HL),A ACCEL ACCELCMD.OFF INC HL DEC BC LD A,B OR C JR NZ,ScSCRN1 POP AF SETPORT WINSP.CPU1,,0 EI RET ;[]==========================================================[] InitFPages PUSH HL LD DE,(TempShift) LD HL,(TempShift+2) LD A,D ;Выделяем номер страницы RLA RL L RLA RL L LD A,L EXX LD E,A ;DE - Адрес страницы в списке LD D,HIGH (PagesList) LD A,(DE) ;Тек.страница SETPORT WINSP.CPU1,,0 EXX RES 7,D ;Вкл.с 0x4000 SET 6,D POP HL RET TestFPages BIT 7,D RET Z RES 7,D SET 6,D EXX INC E ;DE - Адрес страницы в списке LD A,(DE) ;Тек.страница SETPORT WINSP.CPU1,,0 EXX RET GetFPages PUSH HL RES 6,D EXX LD A,E EXX BIT 7,D RES 7,D JR Z,.L1 INC A .L1 LD L,A SUB A LD H,A SRL L RRA SRL L RRA OR D LD D,A LD (TempShift),DE LD (TempShift+2),HL POP HL RET ;[]==========================================================[] ;Процедура инициализация таблицы процентов InitVProc LD A,0x01 LD (ProcFlag),A ;Флаг вывода процентов LD A,(ViewMode) OR A JR NZ,InProcHex ;Проценты для TextWrap InProcASCII LD HL,(FileLenght) LD DE,(FileLenght+2) LD B,0x19 InProcA PUSH BC CALL SearchUp POP BC RET C DJNZ InProcA JR InitProc ;Проценты для Hex InProcHex LD HL,(FileLenght) LD DE,(FileLenght+2) LD BC,0x0190 OR A SBC HL,BC LD BC,0x0000 EX DE,HL SBC HL,BC EX DE,HL RET C LD A,H OR L OR D OR E RET Z ;Процедура инициализации таблицы процентов ;На вход: ; DE+HL - Длина файла-1страница InitProc PUSH HL PUSH DE EX DE,HL LD BC,100 ;Длина файла/100 (%) CALL JUMPS.Divis32 LD (Coeff1+1),DE ;Получаем кол-во байт на LD (Coeff2+1),HL ;один процент LD IX,ProcentTab LD HL,0x0000 LD E,L LD D,H LD BC,0x6300 ;Генерим таблицу LD (IX+0x00),L INC IX LD (IX+0x00),H INC IX LD (IX+0x00),E INC IX LD (IX+0x00),D INC IX LD (IX+0x00),C INC IX INC C ;для каждого процента CoeffLoop PUSH BC Coeff1 LD BC,0x0000 ADD HL,BC LD (IX+0x00),L INC IX LD (IX+0x00),H INC IX EX DE,HL Coeff2 LD BC,0x0000 ADC HL,BC EX DE,HL POP BC LD (IX+0x00),E INC IX LD (IX+0x00),D INC IX LD (IX+0x00),C INC IX INC C DJNZ CoeffLoop POP DE POP HL LD (IX+0x00),L ;Макс.процент INC IX LD (IX+0x00),H INC IX LD (IX+0x00),E INC IX LD (IX+0x00),D INC IX LD (IX+0x00),C SUB A LD (ProcFlag),A RET ;[]----------------------------------------------------------[] ;Процедура просчета и печати проценто PrintVProc LD HL,PutProcent PUSH HL ;Выходим на печать LD A,(ProcFlag) OR A LD A,100 RET NZ ;Уже все 100% LD IX,ProcentTab+250 ;Серидина таблицы проц.50% LD HL,(FileShift) ;Текущее смещение LD DE,(FileShift+2) CALL TestProcent ;В какой половине наход.? JR C,LowTest ;<50% LD A,(IX+0x04) RET Z ;=50% LD IX,ProcentTab+375 ;Таблица с 75% CALL TestProcent ;В какой половине наход.? JR C,Test2 ;50%% OR A RET Z LD BC,-0x0005 ;Ищем вниз по таблице ADD IX,BC ;Нужный процент CALL TestProcent JR Test2 ;X<50% LowTest LD IX,ProcentTab+125 ;Таблица с 25% CALL TestProcent ;В какой половине наход.? JR C,Test2 ;01%процент TestProcent PUSH HL PUSH DE PUSH BC LD C,(IX+0x00) LD B,(IX+0x01) OR A SBC HL,BC EX DE,HL LD C,(IX+0x02) LD B,(IX+0x03) SBC HL,BC JR NZ,.L1 LD A,D OR E .L1 POP BC POP DE POP HL RET ;Процедура вывода процентов PutProcent LD HL,ProcText PUSH HL LD BC,0x2F00 .L1 INC B SUB 100 JR NC,.L1 ADD A,100 EX AF,AF' LD A,B CP "0" JR Z,.L2 SET 0,C .L2 BIT 0,C JR NZ,.L3 LD A,0x20 .L3 LD (HL),A INC HL EX AF,AF' LD B,0x2F .L4 INC B SUB 10 JR NC,.L4 ADD A,10 EX AF,AF' LD A,B CP "0" JR Z,.L5 SET 0,C .L5 BIT 0,C JR NZ,.L6 LD A,0x20 .L6 LD (HL),A INC HL EX AF,AF' ADD A,"0" LD (HL),A POP HL LD DE,0x0250 LD BC,0x0011 LD A,0x80 CALL JUMPS.PrnTxtLnNorm RET InitCodePage: LD A,0 CodePage EQU $-1 LD L,A LD H,0 ADD HL,HL ADD A,L LD L,A LD DE,EncDos ADD HL,DE LD DE,ASCIIenc LD BC,3 LDIR LD A, (CodePage) AND A JR NZ,.next LD HL,0 .call: LD (PutLine2),A LD (PutLine2 + 1),HL RET .next: DEC A LD HL,Table866 JR Z,.next1 LD HL,TableKoi .next1: LD (DecodeSymbol.table),HL LD HL,DecodeSymbol LD A, 0xCD JR .call ProcText DEFB " %",0 ProcFlag DEFB 0x00 ProcentTab DUPL 505,0 ;[]==========================================================[] include fvtext.a80 include fvhex.a80 include fvprn.a80 ;[]==========================================================[] ASCIItab: DEFW 0x0050,0x0230,0x001C,0x007F,0x00,0x0000,TLineUpMs,TBegFile DEFW 0x0050,0x0230,0x0080,0x00E4,0x00,0x0000,TLineDwnMs,TEndFile DEFW 0x0000,0x0050,0x001C,0x00E4,0x00,0x0000,TPageUpMs,ScrollLeft DEFW 0x0230,0x0280,0x001C,0x00E4,0x00,0x0000,TPageDwnMs,ScrollRght DEFW 0x0000,0x0050,0x00F2,0x0100,0x01,0x0000,About,0x0000 DEFW 0x0050,0x00A0,0x00F2,0x0100,0x01,0x0000,ChASCIImode,0x0000 DEFW 0x00A0,0x00F0,0x00F2,0x0100,0x01,0x0000,ChViewer,0x0000 DEFW 0x0190,0x01E0,0x00F2,0x0100,0x01,0x0000,ChCodePage,0x0000 DEFW 0x01E0,0x0230,0x00F2,0x0100,0x01,0x0000,FVPrintFile,0x0000 DEFW 0x0230,0x0280,0x00F2,0x0100,0x21,0x0000,ViewerExit,0x0000 DEFW 0x8000 HEXtab: DEFW 0x0050,0x0230,0x001C,0x007F,0x00,0x0000,HLineUpMs,HBegFile DEFW 0x0050,0x0230,0x0080,0x00E4,0x00,0x0000,HLineDwnMs,HEndFile DEFW 0x0000,0x0050,0x001C,0x00E4,0x00,0x0000,HPageUpMs,0x0000 DEFW 0x0230,0x0280,0x001C,0x00E4,0x00,0x0000,HPageDwnMs,0x0000 DEFW 0x0000,0x0050,0x00F2,0x0100,0x01,0x0000,About,0x0000 DEFW 0x00A0,0x00F0,0x00F2,0x0100,0x01,0x0000,ChViewer,0x0000 DEFW 0x00F0,0x0140,0x00F2,0x0100,0x01,0x0000,HGoTo,0x0000 DEFW 0x01E0,0x0230,0x00F2,0x0100,0x01,0x0000,FVPrintFile,0x0000 DEFW 0x0230,0x0280,0x00F2,0x0100,0x21,0x0000,ViewerExit,0x0000 DEFW 0x8000 FVAboutTab: DEFW 0x011C,0x0164,0x008A,0x0098,0x21,0x0000,AboutExt,0x0000 DEFW 0x0000,0x00A0,0x0000,0x0100,0x20,0x0000,AboutExt,0x0000 DEFW 0x01E0,0x0280,0x0000,0x0100,0x20,0x0000,AboutExt,0x0000 DEFW 0x0000,0x0280,0x0000,0x0048,0x20,0x0000,AboutExt,0x0000 DEFW 0x0000,0x0280,0x009D,0x0100,0x20,0x0000,AboutExt,0x0000 DEFW 0x8000 ;[]==========================================================[]