- ;01234567890123456789012345678901234567890123456789012 
- ;            ZX Evolution Service (101106)            00 
- ;┌───────────────┐┌──────────────────────────────────┐01    ┌───────────────┐ 
- ;│ Exit          ││..          │ <DIR>│31.12.09│23:58│02    │ Выход         │ 
- ;│ Retrieve all  ││НОВАЯП~1    │ <DIR>│31.12.09│23:58│03    │ Всё снова     │ 
- ;│√Erase chip    ││NEWFOL~1    │ <DIR>│31.12.09│23:58│04    │ Стереть м/сх. │ 
- ;│ Add job       ││testram  rom│  2048│31.12.09│23:58│05    │ Добав.задание │ 
- ;│ Execute jobs  ││filename rom│524288│31.12.09│23:58│06    │ Выполнить     │ 
- ;└───────────────┘│zxevo    rom│ 65536│31.12.09│23:58│07    └───────────────┘ 
- ;┌───────────────┐│trdos503 rom│ 16384│31.12.09│23:58│08    ┌───────────────┐ 
- ;│ Chip: M29F040 ││bigfile  bin│3214 K│31.12.09│23:58│09    │ ChipID: 20 E2 │ 
- ;│ CRC: 12345678 ││verybig  bin│4095 M│31.12.09│23:58│10    │ CRC: 12345678 │ 
- ;│ SDcard: FAT32 ││some     rom│   123│31.12.09│23:58│11    │  No SD-card!  │ 
- ;│ Erase...      ││onemore  bin│  9876│31.12.09│23:58│12    │ Verify...     │ 
- ;└───────────────┘└──────────────────────────────────┘13    └───────────────┘ 
- ;┌───────────────────────────────────────────────────┐14 
- ;│gluk     rom trdos610 rom basic128 rom basic48  rom│15     секторов(1)  нач.кластер(4)  имя(8+3)  |  итого на ячейку 16 
- ;│............ ............ ............ ............│16                                            |  итого на всё   512 
- ;│............ ............ ............ ............│17 
- ;│............ ............ ............ ............│18 
- ;│............ ............ ............ ............│19 
- ;│............ ............ ............ ............│20 
- ;│............ ............ ............ ............│21 
- ;│............ ............ ............ ............│22 
- ;└───────────────────────────────────────────────────┘23 
- ;               http://www.NedoPC.com/                24 
-   
-   
- MSG_FL_CHIP: 
-         .DB     $16, 2, 9,$15,$9F,"Chip",0 
- MSG_FL_ID: 
-         .DB     "ID: ",0,0 
- MSG_FL_M29F040: 
-         .DB     ": M29F040",0 
- MSG_FL_AM29F040: 
-         .DB     ":Am29F040",0 
- MSG_FL_CRC: 
-         .DB     $16, 2,10,$15,$9F,"CRC: "        ,0,0 
- MSG_FL_SDCARD: 
-         .DB     $16, 2,11,        "SDcard: FAT"  ,0,0 
- MSG_FL_ERASECHIP: 
-         .DB     $16,1,4,$FB,0,0 
- MSG_FL_ERRPOS: 
-         .DB     $16, 1,11,$15,$AE,0 
- ; 
- WIND_FL_MENU: 
-         .DB     0,1,17,7,$9F,$00 
- WIND_FL_STATUS: 
-         .DB     0,8,17,6,$9F,$00 
- WIND_FL_FILEPANEL: 
-         .DB     17,1,36,13,$9F,$00 
- WIND_FL_CONTENT: 
-         .DB     0,14,53,10,$9F,$00 
- WIND_FL_RESULT_OK: 
-         .DB     11,4,31,6,$CF,$01 
- WIND_FL_RESULT_FAIL: 
-         .DB     11,4,31,6,$AF,$01 
- ; 
- FL_UNKNOWN: 
-         .DB     "    ????   ",0 
- FL_EMPTY: 
-         .DB     "   empty   ",0 
- FL_ZXBAS48: 
-         .DB     $A8,$02,$99,$0C ;0C9902A8 
-         .DB     "ZX Basic48 ",0 
- FL_ZXBAS128: 
-         .DB     $C8,$59,$C0,$83 ;83C059C8 
-         .DB     "ZX Basic128",0 
- FL_TRDOS: 
-         .DB     $71,$06,$7A,$7A ;7A7A0671 
-         .DB     "TR-DOS     ",0 
- FL_ALCOGLUKPEN: 
-         .DB     $44,$6F,$D7,$87 ;87D76F44 
-         .DB     "AlCoGLUKpen",0 
- FL_EMPT2: 
-         .DB     $AD,$33,$52,$BE ;BE5233AD 
-         .DB     " * empty*  ",0 
- FL_QC3: 
-         .DB     "QC 3" 
-         .DB     "QC3.xx     ",0 
- FL_ATM2CPM: 
-         .DB     $1E,$65,$1E,$B3 ;B31E651E 
-         .DB     "ATM2_CPM   ",0 
- FL_XBIOSMENU: 
-         .DB     $BC,$A4,$2C,$29 ;292CA4BC 
-         .DB     "xBIOS stmnu",0 
- FL_VTRDOS: 
-         .DB     $27,$2E,$23,$68 ;68232E27 
-         .DB     "vTR-dos    ",0 
- FL_TSBIOS: 
-         .DB     $FF,$63,$9B,$15 ;159B63FF 
-         .DB     "TS-BIOS    ",0 
- FL_PROFKA: 
-         .DB     "PROFKA     ",0 
- ; 
- MSG_FP_DIR: 
-         .DB     " <DIR>",$B3,0 
- ; 
- ; 
- ; 
- ;-------------------------------------- 
- ; 
- .EQU    FL_CONTENT      =MEGABUFFER 
- .EQU    FL_BUFFER       =MEGABUFFER+512 
- .DSEG 
- FL_TMP0:        .BYTE   2 
- FL_TMP2:        .BYTE   1 
- .CSEG 
- ; 
- ;====================================== 
- ;чтение ID Flash-ROM чипа 
- ;out:   ZL,ZH 
- F_ID:   RCALL   F_RST 
-         LDI     DATA,$90 
-         RCALL   F_CMD 
-         LDI     TEMP,FLASH_CTRL 
-         LDI     DATA,0B00000011 
-         RCALL   FPGA_REG 
-         LDI     WL,$00 
-         LDI     WH,$00 
-         LDI     TMP2,$00 
-         RCALL   F_IN 
-         MOV     ZL,DATA 
-         LDI     WL,$01 
-         RCALL   F_IN 
-         MOV     ZH,DATA 
-         RJMP    F_RST 
- ; 
- ;-------------------------------------- 
- ;запись 512 байт во Flash-ROM из буфера BUFSECT 
- ;in:    WL,WH == address (LO,MID) 
- ;out:   W+512 
- F_WRITE512: 
-         LDIZ    BUFSECT 
-         LDIX    512 
-   
- F_W5122:LD      DATA,Z 
-         CPI     DATA,$FF 
-         BREQ    F_W5123 
-         LDI     DATA,$A0 
-         RCALL   F_CMD 
-         LDI     TEMP,FLASH_CTRL 
-         LDI     DATA,0B00000001 
-         RCALL   FPGA_REG 
-         LDI     TEMP,FLASH_LOADDR 
-         MOV     DATA,WL 
-         RCALL   FPGA_REG 
-         LDI     TEMP,FLASH_MIDADDR 
-         MOV     DATA,WH 
-         RCALL   FPGA_REG 
-         LDI     TEMP,FLASH_DATA 
-         LD      DATA,Z 
-         RCALL   FPGA_REG 
-         LDI     TEMP,FLASH_CTRL 
-         LDI     DATA,0B00000101 
-         RCALL   FPGA_REG 
-         LDI     DATA,0B00000001 
-         RCALL   FPGA_SAME_REG 
-         LDI     DATA,0B00000011 
-         RCALL   FPGA_SAME_REG 
-         LDI     TEMP,FLASH_DATA 
-         RCALL   FPGA_REG 
- F_W5121:RCALL   FPGA_SAME_REG 
-         LD      TEMP,Z 
-         EOR     DATA,TEMP 
-         SBRC    DATA,7 
-         RJMP    F_W5121 
-   
- F_W5123:ADIW    ZL,1 
-         ADIW    WL,1 
-         SBIW    XL,1 
-         BRNE    F_W5122 
-   
-         RET 
- ; 
- ;-------------------------------------- 
- ;стирание всего чипа Flash-ROM 
- F_CHIPERASE: 
-         LDI     DATA,$80 
-         RCALL   F_CMD 
-         LDI     DATA,$10 
-         RCALL   F_CMD 
- F_ERAS1:LDI     TEMP,FLASH_CTRL 
-         LDI     DATA,0B00000011 
-         RCALL   FPGA_REG 
-         LDI     TEMP,FLASH_DATA 
-         RCALL   FPGA_REG 
- F_ERAS9:RCALL   FPGA_SAME_REG 
-         SBRS    DATA,7 
-         RJMP    F_ERAS9 
- ; 
- ; - - - - - - - - - - - - - - - - - - - 
- ;сброс Flash-ROM чипа 
- F_RST:  LDI     DATA,$F0 
-         RCALL   F_CMD 
-         DELAY_US 5 
-         LDI     TEMP,FLASH_CTRL 
-         LDI     DATA,0B00000011 
-         RCALL   FPGA_REG 
-         RET 
- ; 
- ;-------------------------------------- 
- ;комманда в Flash-ROM чип 
- ;in:    DATA == instructions 
- F_CMD:  PUSH    DATA 
-         LDI     TEMP,FLASH_CTRL 
-         LDI     DATA,0B00000001 
-         RCALL   FPGA_REG 
-         LDI     TEMP,FLASH_LOADDR 
-         LDI     DATA,$55 
-         RCALL   FPGA_REG 
-         LDI     TEMP,FLASH_MIDADDR 
-         LDI     DATA,$55 
-         RCALL   FPGA_REG 
-         LDI     TEMP,FLASH_DATA 
-         LDI     DATA,$AA 
-         RCALL   FPGA_REG 
-         LDI     TEMP,FLASH_CTRL 
-         LDI     DATA,0B00000101 
-         RCALL   FPGA_REG 
-         LDI     DATA,0B00000001 
-         RCALL   FPGA_SAME_REG 
-         LDI     TEMP,FLASH_LOADDR 
-         LDI     DATA,$AA 
-         RCALL   FPGA_REG 
-         LDI     TEMP,FLASH_MIDADDR 
-         LDI     DATA,$2A 
-         RCALL   FPGA_REG 
-         LDI     TEMP,FLASH_DATA 
-         LDI     DATA,$55 
-         RCALL   FPGA_REG 
-         LDI     TEMP,FLASH_CTRL 
-         LDI     DATA,0B00000101 
-         RCALL   FPGA_REG 
-         LDI     DATA,0B00000001 
-         RCALL   FPGA_SAME_REG 
-         LDI     TEMP,FLASH_LOADDR 
-         LDI     DATA,$55 
-         RCALL   FPGA_REG 
-         LDI     TEMP,FLASH_MIDADDR 
-         LDI     DATA,$55 
-         RCALL   FPGA_REG 
-         POP     DATA 
- F_WRD:  LDI     TEMP,FLASH_DATA 
-         RCALL   FPGA_REG 
-         LDI     TEMP,FLASH_CTRL 
-         LDI     DATA,0B00000101 
-         RCALL   FPGA_REG 
-         LDI     DATA,0B00000001 
-         RJMP    FPGA_SAME_REG 
- ; 
- ;-------------------------------------- 
- ;чтение одного байта Flash-ROM 
- ;in:    WL,WH,TMP2 == address 
- ;out:   DATA == data 
- F_IN:   LDI     TEMP,FLASH_HIADDR 
-         MOV     DATA,TMP2 
-         RCALL   FPGA_REG 
- F_IN2:  LDI     TEMP,FLASH_MIDADDR 
-         MOV     DATA,WH 
-         RCALL   FPGA_REG 
-         LDI     TEMP,FLASH_LOADDR 
-         MOV     DATA,WL 
-         RCALL   FPGA_REG 
-         LDI     TEMP,FLASH_DATA 
-         LDI     DATA,$FF 
-         RJMP    FPGA_REG 
- ; 
- ;-------------------------------------- 
- ;in:    WH,TMP2 - адрес (mid,hi) в Flash-ROM 
- ;       Z - куда (в ОЗУ AVR-а) 
- ;       X - сколько байт 
- F_READFLASH:; + ещё посчитать crc32, + ещё ... 
-         LDI     TEMP,FLASH_CTRL 
-         LDI     DATA,0B00001011 
-         RCALL   FPGA_REG 
-         CLR     WL 
-         RCALL   F_IN 
-         RJMP    F_RDFL2 
- F_RDFL1:RCALL   FPGA_SAME_REG 
- F_RDFL2:ST      Z+,DATA 
-         AND     COUNT,DATA 
-         CALL    CRC32_UPDATE 
-         ADIW    WL,1 
-         ADC     TMP2,NULL 
-         SBIW    XL,1 
-         BRNE    F_RDFL1 
-         RET 
- ; 
- ;====================================== 
- ; 
- .EQU    CRC32_0         =0 
- .EQU    CRC32_1         =1 
- .EQU    CRC32_2         =2 
- .EQU    CRC32_3         =3 
- .EQU    FLSH_ADR1       =4 
- .EQU    FLSH_ADR2       =5 
- .EQU    FLSH_COUNT      =6 
- .EQU    FLFP_BUFADR0    =7 
- .EQU    FLFP_BUFADR1    =8 
- .EQU    FLFP_TOTAL      =9 
- .EQU    FLFP_TOP        =10 
- .EQU    FLFP_SELECT     =11 
- .EQU    FLFP_CURSOR     =12 
- .EQU    FLSH_TEMP0      =13 
- .EQU    FLSH_TEMP1      =14 
- .EQU    FLSH_TEMP2      =15 
- .EQU    FLSH_TEMP3      =16 
- .EQU    FLSH_START      =17 
- .EQU    FLSH_SIZE       =18 
- .EQU    FLSH_ERASE      =19 
- .EQU    FLMNU_FLAGS     =20 
- .EQU    FLMNU_CURSOR    =21 
- .EQU    FLMEMSIZE       =22 
- ; 
- .EQU    FLFP_HEIGHT     =11 
- .EQU    FLFP_WIDTH      =34 
- .EQU    FLFP_XPOS       =18 
- .EQU    FLFP_YPOS       =2 
- ; 
- FLASHER: 
-         GETMEM  FLMEMSIZE 
- FL_REVERT: 
-         ANDI    FLAGS1,0B11111100 
- ;        SBR     FLAGS1,0B00001000 
-         STH     FLSH_ERASE,NULL 
-         STH     FLMNU_FLAGS,NULL 
-         LDI     DATA,0B10000010 
-         STH     FLMNU_CURSOR,DATA 
-   
-         LDIX    FL_CONTENT 
-         LDI     COUNT,32 
- FL_CLRCNT2: 
-         LDI     DATA,$80 
-         ST      X+,DATA 
-         LDI     TEMP,15 
- FL_CLRCNT1: 
-         ST      X+,NULL 
-         DEC     TEMP 
-         BRNE    FL_CLRCNT1 
-         DEC     COUNT 
-         BRNE    FL_CLRCNT2 
-   
-         LDIZ    WIND_FL_MENU*2 
-         CALL    WINDOW 
-         LDIZ    WIND_FL_STATUS*2 
-         CALL    WINDOW 
-         LDIZ    WIND_FL_FILEPANEL*2 
-         CALL    WINDOW 
-         LDIZ    WIND_FL_CONTENT*2 
-         CALL    WINDOW 
-   
-         LDIZ    MLMSG_FL_MENU*2 
-         CALL    SCR_PRINTMLSTR 
-         RCALL   FLMENU_PUTCURSOR 
-         LDI     DATA,0B00001111 
-         STH     FLMNU_FLAGS,DATA 
- ; - - - - - - - - - - - - - - - - - - - 
-         LDIZ    MSG_FL_CHIP*2 
-         CALL    SCR_PRINTSTRZ 
-   
-         RCALL   F_ID 
-         CPI     ZL,$01 
-         BRNE    FL_DET_CHIP1 
-         CPI     ZH,$A4 
-         BRNE    FL_DET_CHIP1 
-         LDIZ    MSG_FL_AM29F040*2 
-         RJMP    FL_DET_CHIP2 
- FL_DET_CHIP1: 
-         CPI     ZL,$20 
-         BRNE    FL_DET_CHIP8 
-         CPI     ZH,$E2 
-         BRNE    FL_DET_CHIP8 
-         LDIZ    MSG_FL_M29F040*2 
- FL_DET_CHIP2: 
-         CALL    SCR_PRINTSTRZ 
-         RJMP    FL_DET_CHIP9 
-   
- FL_DET_CHIP8: 
-         PUSHZ 
-         LDIZ    MSG_FL_ID*2 
-         CALL    SCR_PRINTSTRZ 
-         POPZ 
-         MOV     DATA,ZL 
-         CALL    HEXBYTE 
-         LDI     DATA,$20 
-         CALL    PUTCHAR 
-         MOV     DATA,ZH 
-         CALL    HEXBYTE 
- FL_DET_CHIP9: 
- ; - - - - - - - - - - - - - - - - - - - 
-         LDIZ    MLMSG_FL_READROM*2 
-         CALL    SCR_PRINTMLSTR 
-         STH     FLSH_START,FF 
-         STH     FLSH_SIZE,NULL 
-         RCALL   FL_SHOWCONTENT 
-   
-         RCALL   CRC32_INIT 
-         CLR     COUNT 
-         CLR     WH 
-         CLR     TMP2 
- FL_DET_ROM_00: 
-         STH     FLSH_COUNT,COUNT 
-         STH     FLSH_ADR1,WH 
-         STH     FLSH_ADR2,TMP2 
-         LDIZ    FL_UNKNOWN*2 
-         STSZ    FL_TMP0 
-         SER     COUNT 
-   
-         LDIZ    FL_BUFFER 
-         LDIX    $0400 
-         RCALL   F_READFLASH 
-         STS     FL_TMP2,COUNT 
-   
-         GETMEM  4 
-         LDIZ    FL_BUFFER+$00FF 
-         LD      DATA,Z+ 
-         CPI     DATA,$02 
-         BRNE    FL_DET_ROM_10 
-         LD      DATA,Z+ 
-         CPI     DATA,$01 
-         BRNE    FL_DET_ROM_11 
-         ADIW    ZL,1 
-         LD      DATA,Z+ 
-         CPI     DATA,$C9 
-         BRNE    FL_DET_ROM_11 
-         LDIZ    FL_PROFKA*2 
-         RJMP    FL_DET_ROM_12 
-   
- FL_DET_ROM_10: 
-         CPI     DATA,$14 
-         BRNE    FL_DET_ROM_11 
-         LD      DATA,Z+ 
-         CPI     DATA,$01 
-         BRNE    FL_DET_ROM_11 
-         LD      DATA,Z+ 
-         CPI     DATA,$06 
-         BRNE    FL_DET_ROM_11 
-         LDIZ    FL_PROFKA*2 
-         RJMP    FL_DET_ROM_12 
-   
- FL_DET_ROM_11: 
-         LDIZ    FL_BUFFER+$0096 
-         LDIX    $016F 
-         RCALL   RAM_CRC32 
-         LDIZ    FL_ZXBAS48*2 
-         RCALL   FL_CRC_CMP 
-         BREQ    FL_DET_ROM_12 
-   
-         LDIZ    FL_BUFFER+$0080 
-         LDIX    $0080 
-         RCALL   RAM_CRC32 
-         LDIZ    FL_ZXBAS128*2 
-         RCALL   FL_CRC_CMP 
-         BREQ    FL_DET_ROM_12 
-   
-         LDIZ    FL_BUFFER+$0363 
-         LDIX    $0008 
-         RCALL   RAM_CRC32 
-         LDIZ    FL_VTRDOS*2 
-         RCALL   FL_CRC_CMP 
-         BREQ    FL_DET_ROM_12 
-   
-         LDIZ    FL_BUFFER+$0000 
-         LDIX    $0007 
-         RCALL   RAM_CRC32 
-         LDIZ    FL_XBIOSMENU*2 
-         RCALL   FL_CRC_CMP 
-         BREQ    FL_DET_ROM_12 
-   
-         LDIZ    FL_BUFFER+$0000 
-         LDIX    $0010 
-         RCALL   RAM_CRC32 
-         LDIZ    FL_TSBIOS*2 
-         RCALL   FL_CRC_CMP 
-         BREQ    FL_DET_ROM_12 
-   
-         LDIZ    FL_BUFFER+$0000 
-         LDIX    $0038 
-         RCALL   RAM_CRC32 
-         LDIZ    FL_ATM2CPM*2 
-         RCALL   FL_CRC_CMP 
-         BRNE    FL_DET_ROM_13 
- FL_DET_ROM_12: 
-         STSZ    FL_TMP0 
- FL_DET_ROM_13: 
-         FREEMEM 4 
-   
-         CLR     WL 
-         LDH     WH,FLSH_ADR1 
-         ADDI    WH,$04 
-         LDH     TMP2,FLSH_ADR2 
-         LDIX    $3800 
-         LDI     TEMP,FLASH_CTRL 
-         LDI     DATA,0B00001011 
-         RCALL   FPGA_REG 
-         LDS     COUNT,FL_TMP2 
-         RCALL   F_IN 
-         RJMP    FL_DET_ROM_21 
- FL_DET_ROM_20: 
-         RCALL   FPGA_SAME_REG 
- FL_DET_ROM_21: 
-         AND     COUNT,DATA 
-         RCALL   CRC32_UPDATE 
-         ADIW    WL,1 
-         SBIW    XL,1 
-         BRNE    FL_DET_ROM_20 
-         STS     FL_TMP2,COUNT 
-   
-         LDH     WH,FLSH_ADR1 
-         ADDI    WH,$3C 
-         LDH     TMP2,FLSH_ADR2 
-         LDIZ    FL_BUFFER 
-         LDIX    $0400 
-         RCALL   F_READFLASH 
-         LDIZ    FL_EMPTY*2 
-         INC     COUNT 
-         BRNE    FL_DET_ROM_30 
-         STSZ    FL_TMP0 
- FL_DET_ROM_30: 
-   
-         GETMEM  4 
-   
-         LDIZ    FL_BUFFER+$019B 
-         LDD     R0,Z+0 
-         LDD     R1,Z+1 
-         LDD     R2,Z+2 
-         LDD     R3,Z+3 
-         LDIZ    FL_QC3*2 
-         RCALL   FL_CRC_CMP 
-         BREQ    FL_DET_ROM_32 
-   
-         LDIZ    FL_BUFFER+$012F 
-         LDIX    $0209 
-         RCALL   RAM_CRC32 
-         LDIZ    FL_ALCOGLUKPEN*2 
-         RCALL   FL_CRC_CMP 
-         BREQ    FL_DET_ROM_32 
-         LDIZ    FL_EMPT2*2 
-         RCALL   FL_CRC_CMP 
-         BRNE    FL_DET_ROM_31 
-         LDS     DATA,FL_TMP2 
-         INC     DATA 
-         BREQ    FL_DET_ROM_32 
-   
- FL_DET_ROM_31: 
-         LDIZ    FL_BUFFER+$03B0 
-         LDIX    $0040 
-         RCALL   RAM_CRC32 
-         LDIZ    FL_TRDOS*2 
-         RCALL   FL_CRC_CMP 
-         BRNE    FL_DET_ROM_33 
- FL_DET_ROM_32: 
-         STSZ    FL_TMP0 
- FL_DET_ROM_33: 
-   
-         FREEMEM 4 
-   
-         LDIZ    FL_BUFFER+$03F8 
-         LDI     COUNT,6 
- FL_DET_ROM_34: 
-         LD      DATA,Z+ 
-         CPI     DATA,$20 
-         BRCS    FL_DET_ROM_37 
-         CPI     DATA,$7F 
-         BRCC    FL_DET_ROM_37 
-         DEC     COUNT 
-         BRNE    FL_DET_ROM_34 
-   
-         LDIZ    FL_BUFFER+$03F8 
-         LDIX    FL_CONTENT+5 
-         LDH     DATA,FLSH_COUNT 
-         LDI     TEMP,16 
-         MUL     DATA,TEMP 
-         ADD     XL,R0 
-         ADC     XH,R1 
-         LDI     COUNT,6 
- FL_DET_ROM_35: 
-         LD      DATA,Z+ 
-         ST      X+,DATA 
-         DEC     COUNT 
-         BRNE    FL_DET_ROM_35 
-         LDI     COUNT,5 
- FL_DET_ROM_36: 
-         ST      X+,NULL 
-         DEC     COUNT 
-         BRNE    FL_DET_ROM_36 
-         RJMP    FL_DET_ROM_40 
-   
- FL_DET_ROM_37: 
-         LDSZ    FL_TMP0 
-         LDIX    FL_CONTENT+5 
-         LDH     DATA,FLSH_COUNT 
-         LDI     TEMP,16 
-         MUL     DATA,TEMP 
-         ADD     XL,R0 
-         ADC     XH,R1 
-         LDI     COUNT,11 
- FL_DET_ROM_38: 
-         LPM     DATA,Z+ 
-         ST      X+,DATA 
-         DEC     COUNT 
-         BRNE    FL_DET_ROM_38 
-   
- FL_DET_ROM_40: 
-         RCALL   FL_SHOWCONTENT 
-   
-         CALL    INKEY 
-         BREQ    FL_DET_ROM_41 
-         SBRC    TEMP,PS2K_BIT_EXTKEY 
-         RJMP    FL_DET_ROM_41 
-         CPI     DATA,KEY_ESC 
-         BRNE    FL_DET_ROM_41 
-         RJMP    FLSH_EXIT 
- FL_DET_ROM_41: 
-         LDH     WH,FLSH_ADR1 
-         LDH     TMP2,FLSH_ADR2 
-         LDI     TEMP,$40 
-         ADD     WH,TEMP 
-         ADC     TMP2,NULL 
-         LDH     COUNT,FLSH_COUNT 
-         INC     COUNT 
-         SBRS    COUNT,5 ; COUNT==32 ? 
-         RJMP    FL_DET_ROM_00 
-   
-         RCALL   CRC32_RELEASE 
-         LDIZ    MSG_FL_CRC*2 
-         CALL    SCR_PRINTSTRZ 
-         LDH     DATA,CRC32_3 
-         CALL    HEXBYTE 
-         LDH     DATA,CRC32_2 
-         CALL    HEXBYTE 
-         LDH     DATA,CRC32_1 
-         CALL    HEXBYTE 
-         LDH     DATA,CRC32_0 
-         CALL    HEXBYTE 
- ; - - - - - - - - - - - - - - - - - - - 
-         LDIZ    MLMSG_FL_SDINIT*2 
-         CALL    SCR_PRINTMLSTR 
-   
-         IN      TEMP,SPL 
-         STS     GLB_STACK+0,TEMP 
-         IN      TEMP,SPH 
-         STS     GLB_STACK+1,TEMP 
-         STS     GLB_Y+0,YL 
-         STS     GLB_Y+1,YH 
-         LDIZ    FL_ERRHANDLER 
-         RCALL   SD_FAT_INIT 
-   
-         PUSHX 
-         PUSHW 
-         LDIZ    MSG_FL_SDCARD*2 
-         CALL    SCR_PRINTSTRZ 
-         LDS     TMP2,FAT_CAL_FAT 
-         LDI     DATA,$31 ;"1" 
-         LDI     TEMP,$32 ;"2" 
-         TST     TMP2 
-         BREQ    FP_SDI1 
-         LDI     TEMP,$36 ;"6" 
-         DEC     TMP2 
-         BREQ    FP_SDI1 
-         LDI     DATA,$33 ;"3" 
-         LDI     TEMP,$32 ;"2" 
- FP_SDI1:PUSH    TEMP 
-         CALL    SCR_PUTCHAR 
-         POP     DATA 
-         CALL    SCR_PUTCHAR 
-         POPW 
-         POPX 
-   
-         RCALL   FP_RD_DIR 
-         STH     FLFP_CURSOR,FF 
-         RCALL   FP_OUT 
-         STH     FLFP_CURSOR,NULL 
- ; - - - - - - - - - - - - - - - - - - - 
- FLMENU1:LDH     DATA,FLMNU_CURSOR 
-         ANDI    DATA,0B00011111 
- FLMENU2:STH     FLMNU_CURSOR,DATA 
-         RCALL   FLMENU_PUTCURSOR 
- FLMENU0:CALL    WAITKEY 
-         CPI     DATA,KEY_UP 
-         BREQ    FLMENU_UP 
-         CPI     DATA,KEY_DOWN 
-         BREQ    FLMENU_DOWN 
-         CPI     DATA,KEY_ENTER 
-         BREQ    FLMENU_ENTER 
-         CPI     DATA,KEY_ESC 
-         BRNE    FLMENU0 
-         LDI     DATA,0B00000001 
-         RJMP    FLMENU2 
- ; 
- FLMENU_UP: 
-         LDH     DATA,FLMNU_CURSOR 
- FLMENU_U1: 
-         LSR     DATA 
-         BRCS    FLMENU0 
-         LDH     TEMP,FLMNU_FLAGS 
-         AND     TEMP,DATA 
-         BRNE    FLMENU_U2 
-         RJMP    FLMENU_U1 
- FLMENU_U2: 
-         STH     FLMNU_CURSOR,DATA 
-         RJMP    FLMENU1 
- ; 
- FLMENU_DOWN: 
-         LDH     DATA,FLMNU_CURSOR 
- FLMENU_D1: 
-         LSL     DATA 
-         BRCS    FLMENU0 
-         LDH     TEMP,FLMNU_FLAGS 
-         AND     TEMP,DATA 
-         BRNE    FLMENU_U2 
-         RJMP    FLMENU_D1 
- ; 
- FLMENU_ENTER: 
-         LDH     DATA,FLMNU_CURSOR 
-         LDH     TEMP,FLMNU_FLAGS 
-         AND     DATA,TEMP 
-         BREQ    FLMENU0 
-         LSR     DATA 
-         BRCC    FLMENU_E1 
- FLSH_EXIT: 
-         FREEMEM FLMEMSIZE 
-         RET 
- FLMENU_E1: 
-         LSR     DATA 
-         BRCC    FLMENU_E2 
-         RJMP    FL_REVERT 
- FLMENU_E2: 
-         LSR     DATA 
-         BRCC    FLMENU_E3 
-         RJMP    FL_ERASEJOB 
- FLMENU_E3: 
-         LSR     DATA 
-         BRCC    FLMENU_E4 
-         LDH     DATA,FLMNU_CURSOR 
-         ORI     DATA,0B10000000 
-         STH     FLMNU_CURSOR,DATA 
-         RCALL   FLMENU_PUTCURSOR 
-         RJMP    FP_FS1 
- FLMENU_E4: 
-         LSR     DATA 
-         BRCS    FLMENU_E5 
-         RJMP    FLMENU0 
- ; 
- FLMENU_E5: ; execute job(s) 
- ;        SBR     FLAGS1,0B00001000 
-         LDH     DATA,FLMNU_CURSOR 
-         ORI     DATA,0B10000000 
-         STH     FLMNU_CURSOR,DATA 
-         RCALL   FLMENU_PUTCURSOR 
-   
-         LDIZ    MLMSG_FL_SURE*2 
-         CALL    SCR_PRINTMLSTR 
-         CALL    WAITKEY 
-         SBRC    TEMP,PS2K_BIT_EXTKEY 
-         RJMP    FL_EX01 
-         CPI     DATA,KEY_Y 
-         BREQ    FL_EX09 
- FL_EX01:LDI     XL,2 
-         LDI     XH,12 
-         CALL    SCR_SET_CURSOR 
-         LDI     DATA,$20 
-         LDI     TEMP,$9F 
-         LDI     COUNT,13 
-         CALL    SCR_FILL_CHAR_ATTR 
-         RJMP    FLMENU1 
- FL_EX09: 
- ; 
-         LDI     TEMP,$0E 
-         CALL    SCR_SET_ATTR 
-         LDH     DATA,FLSH_ERASE 
-         LDI     COUNT,0 
- FL_EX12:LSR     DATA 
-         BRCC    FL_EX11 
-   
-         PUSH    DATA 
-         PUSH    COUNT 
-         LSL     COUNT 
-         LSL     COUNT 
-         PUSH    COUNT 
-         RCALL   FL_SHW_SETCURSOR 
-         LDI     DATA,$45;"E" 
-         LDI     COUNT,12 
-         CALL    SCR_FILL_CHAR 
-         POP     COUNT 
-         INC     COUNT 
-         PUSH    COUNT 
-         RCALL   FL_SHW_SETCURSOR 
-         LDI     DATA,$45;"E" 
-         LDI     COUNT,12 
-         CALL    SCR_FILL_CHAR 
-         POP     COUNT 
-         INC     COUNT 
-         PUSH    COUNT 
-         RCALL   FL_SHW_SETCURSOR 
-         LDI     DATA,$45;"E" 
-         LDI     COUNT,12 
-         CALL    SCR_FILL_CHAR 
-         POP     COUNT 
-         INC     COUNT 
-         RCALL   FL_SHW_SETCURSOR 
-         LDI     DATA,$45;"E" 
-         LDI     COUNT,12 
-         CALL    SCR_FILL_CHAR 
-         POP     COUNT 
-         POP     DATA 
-   
- FL_EX11:INC     COUNT 
-         CPI     COUNT,8 
-         BRNE    FL_EX12 
-   
-         LDIZ    MLMSG_FL_ERASE*2 
-         CALL    SCR_PRINTMLSTR 
-         LDH     DATA,FLSH_ERASE 
-         CPI     DATA,$FF 
-         BRNE    FL_EX15 
-         RCALL   F_CHIPERASE 
-         RJMP    FL_EX20 
- FL_EX15: 
-         LDI     TMP2,$FF 
- FL_EX16:INC     TMP2 
-         LSR     DATA 
-         BRCC    FL_EX16 
-         PUSH    DATA 
-         PUSH    TMP2 
-         LDI     DATA,$80 
-         RCALL   F_CMD 
-         LDI     TEMP,FLASH_HIADDR 
-         POP     DATA 
-         PUSH    DATA 
-         CALL    FPGA_REG 
-         LDI     DATA,$30 
-         RCALL   F_CMD 
-         POP     TMP2 
-         POP     DATA 
- FL_EX18:INC     TMP2 
-         CPI     TMP2,8 
-         BRCC    FL_EX17 
-         LSR     DATA 
-         BRCC    FL_EX18 
-         PUSH    DATA 
-         PUSH    TMP2 
-         LDI     TEMP,FLASH_HIADDR 
-         MOV     DATA,TMP2 
-         CALL    FPGA_REG 
-         LDI     DATA,$30 
-         RCALL   F_WRD 
-         POP     TMP2 
-         POP     DATA 
-         RJMP    FL_EX18 
- FL_EX17: 
-         LDI     TEMP,FLASH_CTRL 
-         LDI     DATA,0B00000011 
-         CALL    FPGA_REG 
-         LDI     TEMP,FLASH_DATA 
-         CALL    FPGA_REG 
- FL_EX19:CALL    FPGA_SAME_REG 
-         SBRS    DATA,3 
-         RJMP    FL_EX19 
-         RCALL   F_ERAS1 
- FL_EX20: 
- ; 
-         LDIZ    MLMSG_FL_WRITE*2 
-         CALL    SCR_PRINTMLSTR 
-         LDI     TEMP,$0A 
-         CALL    SCR_SET_ATTR 
-   
-         LDI     COUNT,0 
- FL_EX30:STH     FLSH_COUNT,COUNT 
-         LDIZ    FL_CONTENT 
-         LDI     TEMP,16 
-         MUL     TEMP,COUNT 
-         ADD     ZL,R0 
-         ADC     ZH,R1 
-         LD      WL,Z 
-         ANDI    WL,$3F 
-         BREQ    FL_EX390 
-         CPI     WL,33 
-         BRCS    FL_EX31 
- FL_EX390:RJMP   FL_EX39 
- FL_EX31:STH     FLSH_SIZE,WL 
-         CLR     WH 
-         CLR     XL 
-         CLR     XH 
-         LD      TEMP,Z 
-         SBRC    TEMP,6 
-         ADIW    WL,32 
-         SBIW    WL,1 
-         LDS     DATA,FAT_BYTSSEC 
-         DEC     DATA 
-         AND     DATA,WL 
-         INC     DATA 
-         STS     FAT_MPHWOST,DATA 
-         LDS     DATA,FAT_BYTSSEC 
-         RCALL   BCDE_A 
-         STSW    FAT_KOL_CLS+0 
-         STSX    FAT_KOL_CLS+2 
-         STS     FAT_NUMSECK,NULL 
-         LDD     WL,Z+1 
-         LDD     WH,Z+2 
-         LDD     XL,Z+3 
-         LDD     XH,Z+4 
-         STSW    FAT_TFILCLS+0 
-         STSX    FAT_TFILCLS+2 
-   
-         LD      TEMP,Z 
-         SBRS    TEMP,6 
-         RJMP    FL_EX32 
-         LDI     COUNT,32 
- FL_EX33:PUSH    COUNT 
-         RCALL   NEXTSEC 
-         POP     COUNT 
-         DEC     COUNT 
-         BRNE    FL_EX33 
-   
- FL_EX32:LDH     COUNT,FLSH_COUNT 
-         RCALL   FL_SHW_SETCURSOR 
-         CLR     WH 
-         LDH     TMP2,FLSH_COUNT 
-         LSR     TMP2 
-         ROR     WH 
-         LSR     TMP2 
-         ROR     WH 
-         LDI     TEMP,FLASH_HIADDR 
-         MOV     DATA,TMP2 
-         CALL    FPGA_REG 
-         LDIX    1365 ;16384/12 
- FL_EX35:STH     FLSH_TEMP0,XL 
-         STH     FLSH_TEMP1,XH 
-         PUSH    WH 
-         RCALL   NEXTSEC 
-         POP     WH 
-         CLR     WL 
-         RCALL   F_WRITE512 
-         LDH     XL,FLSH_TEMP0 
-         LDH     XH,FLSH_TEMP1 
-         SUBI    XH,2 ;HIGH(512) 
-         BRCC    FL_EX34 
-         LDI     DATA,$57;"W" 
-         CALL    SCR_PUTCHAR 
-         LDI     TEMP,LOW(1365) 
-         ADD     XL,TEMP 
-         LDI     TEMP,HIGH(1365) 
-         ADC     XH,TEMP 
- FL_EX34:LDH     TEMP,FLSH_SIZE 
-         DEC     TEMP 
-         STH     FLSH_SIZE,TEMP 
-         BRNE    FL_EX35 
-   
- FL_EX39:LDH     COUNT,FLSH_COUNT 
-         INC     COUNT 
-         SBRS    COUNT,5 ;COUNT=32 
-         RJMP    FL_EX30 
- ; 
-         RCALL   F_RST 
-         LDI     TEMP,FLASH_CTRL 
-         LDI     DATA,0B00000011 
-         CALL    FPGA_REG 
-   
-         LDIZ    MLMSG_FL_VERIFY*2 
-         CALL    SCR_PRINTMLSTR 
-   
-         STH     FLSH_TEMP3,NULL 
-         LDI     COUNT,0 
- FL_EX40:STH     FLSH_COUNT,COUNT 
-         LDIZ    FL_CONTENT 
-         LDI     TEMP,16 
-         MUL     TEMP,COUNT 
-         ADD     ZL,R0 
-         ADC     ZH,R1 
-         LD      WL,Z 
-         ANDI    WL,$3F 
-         BREQ    FL_EX490 
-         CPI     WL,33 
-         BRCS    FL_EX41 
- FL_EX490:RJMP   FL_EX49 
- FL_EX41:STH     FLSH_SIZE,WL 
-         CLR     WH 
-         CLR     XL 
-         CLR     XH 
-         LD      TEMP,Z 
-         SBRC    TEMP,6 
-         ADIW    WL,32 
-         SBIW    WL,1 
-         LDS     DATA,FAT_BYTSSEC 
-         DEC     DATA 
-         AND     DATA,WL 
-         INC     DATA 
-         STS     FAT_MPHWOST,DATA 
-         LDS     DATA,FAT_BYTSSEC 
-         RCALL   BCDE_A 
-         STSW    FAT_KOL_CLS+0 
-         STSX    FAT_KOL_CLS+2 
-         STS     FAT_NUMSECK,NULL 
-         LDD     WL,Z+1 
-         LDD     WH,Z+2 
-         LDD     XL,Z+3 
-         LDD     XH,Z+4 
-         STSW    FAT_TFILCLS+0 
-         STSX    FAT_TFILCLS+2 
-   
-         LD      TEMP,Z 
-         SBRS    TEMP,6 
-         RJMP    FL_EX42 
-         LDI     COUNT,32 
- FL_EX43:PUSH    COUNT 
-         RCALL   NEXTSEC 
-         POP     COUNT 
-         DEC     COUNT 
-         BRNE    FL_EX43 
-   
- FL_EX42:LDH     COUNT,FLSH_COUNT 
-         RCALL   FL_SHW_SETCURSOR 
-         CLR     WH 
-         LDH     TMP2,FLSH_COUNT 
-         LSR     TMP2 
-         ROR     WH 
-         LSR     TMP2 
-         ROR     WH 
-         LDI     TEMP,FLASH_HIADDR 
-         MOV     DATA,TMP2 
-         CALL    FPGA_REG 
-         STH     FLSH_TEMP2,NULL 
-         LDIX    1365 ;16384/12 
- FL_EX45:STH     FLSH_TEMP0,XL 
-         STH     FLSH_TEMP1,XH 
-         PUSH    WH 
-         RCALL   NEXTSEC 
-         POP     WH 
-         CLR     WL 
-   
-         LDIZ    BUFSECT 
-         LDIX    512 
-         LDI     TEMP,FLASH_CTRL 
-         LDI     DATA,0B00001011 
-         CALL    FPGA_REG 
-         RCALL   F_IN2 
-         RJMP    FL_EX48 
- FL_EX47:CALL    FPGA_SAME_REG 
- FL_EX48:LD      TEMP,Z+ 
-         CP      DATA,TEMP 
-         BREQ    FL_EX46 
-         STH     FLSH_TEMP2,ONE 
-         STH     FLSH_TEMP3,ONE 
- FL_EX46:ADIW    WL,1 
-         SBIW    XL,1 
-         BRNE    FL_EX47 
-   
-         LDH     XL,FLSH_TEMP0 
-         LDH     XH,FLSH_TEMP1 
-         SUBI    XH,2 ;HIGH(512) 
-         BRCC    FL_EX44 
-         LDH     DATA,FLSH_TEMP2 
-         LDI     TEMP,$0C 
-         SBRC    DATA,0 
-         LDI     TEMP,$AE 
-         CALL    SCR_SET_ATTR 
-         LDI     DATA,$56;"V" 
-         CALL    SCR_PUTCHAR 
-         STH     FLSH_TEMP2,NULL 
-         LDI     TEMP,LOW(1365) 
-         ADD     XL,TEMP 
-         LDI     TEMP,HIGH(1365) 
-         ADC     XH,TEMP 
- FL_EX44:LDH     TEMP,FLSH_SIZE 
-         DEC     TEMP 
-         STH     FLSH_SIZE,TEMP 
-         BRNE    FL_EX45 
-   
- FL_EX49:LDH     COUNT,FLSH_COUNT 
-         INC     COUNT 
-         SBRS    COUNT,5 ;COUNT=32 
-         RJMP    FL_EX40 
- ; 
-         LDIZ    MLMSG_FL_COMPLETE*2 
-         CALL    SCR_PRINTMLSTR 
-   
-         LDIZ    WIND_FL_RESULT_OK*2 
-         LDH     DATA,FLSH_TEMP3 
-         TST     DATA 
-         BREQ    FL_EX91 
-         LDIZ    WIND_FL_RESULT_FAIL*2 
- FL_EX91:CALL    WINDOW 
-         LDIZ    MLMSG_FLRES0*2 
-         CALL    SCR_PRINTMLSTR 
-   
-         LDIZ    MLMSG_FLRES1*2 
-         LDH     DATA,FLSH_TEMP3 
-         TST     DATA 
-         BREQ    FL_EX92 
-         LDIZ    MLMSG_FLRES2*2 
- FL_EX92:CALL    SCR_PRINTMLSTR 
-   
-         CALL    WAITKEY 
-         RJMP    FL_REVERT 
- ; 
- ;-------------------------------------- 
- ; 
- FL_ERRHANDLER: 
-         CLI 
-         LDS     TEMP,GLB_STACK+0 
-         OUT     SPL,TEMP 
-         LDS     TEMP,GLB_STACK+1 
-         OUT     SPH,TEMP 
-         LDS     YL,GLB_Y+0 
-         LDS     YH,GLB_Y+1 
-         SEI 
-         PUSH    DATA 
-         LDIZ    MSG_FL_ERRPOS*2 
-         CALL    SCR_PRINTSTRZ 
-         POP     DATA 
-         LDIZ    MLMSG_FL_SDERROR1*2 
-         CPI     DATA,1 
-         BREQ    FL_ERRHNDL1 
-         LDIZ    MLMSG_FL_SDERROR2*2 
-         CPI     DATA,2 
-         BREQ    FL_ERRHNDL1 
-         LDIZ    MLMSG_FL_SDERROR3*2 
-         CPI     DATA,3 
-         BREQ    FL_ERRHNDL1 
-         LDIZ    MLMSG_FL_SDERROR4*2 
-         CPI     DATA,4 
-         BREQ    FL_ERRHNDL1 
-         LDIZ    MLMSG_FL_SDERRORX*2 
- FL_ERRHNDL1: 
-         CALL    SCR_PRINTMLSTR 
-         LDI     DATA,0B00000111 
-         STH     FLMNU_FLAGS,DATA 
-         LDI     DATA,0B00000010 
-         RJMP    FLMENU2 
- ; 
- ;-------------------------------------- 
- ; 
- FL_ERASEJOB: 
-         LDIX    FL_CONTENT 
-         LDI     TEMP,0B00000001 
- FL_EJB5:LDH     DATA,FLSH_ERASE 
-         AND     DATA,TEMP 
-         BRNE    FL_EJB1 
-         LDH     DATA,FLSH_ERASE 
-         OR      DATA,TEMP 
-         STH     FLSH_ERASE,DATA 
-         LDI     COUNT,4 
- FL_EJB3:ST      X+,NULL 
-         ST      X+,NULL 
-         ST      X+,NULL 
-         ST      X+,NULL 
-         ST      X+,NULL 
-         LDIZ    FL_EMPTY*2 
-         LDI     WL,11 
- FL_EJB2:LPM     DATA,Z+ 
-         ST      X+,DATA 
-         DEC     WL 
-         BRNE    FL_EJB2 
-         DEC     COUNT 
-         BRNE    FL_EJB3 
-         RJMP    FL_EJB4 
- FL_EJB1:ADIW    XL,32 
-         ADIW    XL,32 
- FL_EJB4:LSL     TEMP 
-         BRCC    FL_EJB5 
-         LDH     DATA,FLMNU_FLAGS 
-         ORI     DATA,0B00010000 
-         STH     FLMNU_FLAGS,DATA 
-         RCALL   FL_SHOWCONTENT 
-         RJMP    FLMENU1 
- ; 
- ;-------------------------------------- 
- ; 
- FP_FS1: RCALL   FP_OUT 
- FP_FS0: CALL    WAITKEY 
-         CPI     DATA,KEY_UP 
-         BREQ    FP_1_UP 
-         CPI     DATA,KEY_DOWN 
-         BREQ    FP_1_DOWN 
-         CPI     DATA,KEY_PAGEUP 
-         BREQ    FP_P_UP 
-         CPI     DATA,KEY_PAGEDOWN 
-         BREQ    FP_P_DOWN 
-         CPI     DATA,KEY_HOME 
-         BREQ    FP_BEGIN 
-         CPI     DATA,KEY_END 
-         BREQ    FP_END 
-         CPI     DATA,KEY_ENTER 
-         BREQ    FP_ENTER 
-         CPI     DATA,KEY_ESC 
-         BRNE    FP_FS0 
-   
-         LDH     XH,FLFP_CURSOR 
-         ADDI    XH,FLFP_YPOS 
-         LDI     XL,FLFP_XPOS 
-         CALL    SCR_SET_CURSOR 
-         LDI     TEMP,$9F 
-         LDI     COUNT,FLFP_WIDTH 
-         CALL    SCR_FILL_ATTR 
-         RJMP    FLMENU1 
- ; 
- FP_END: RJMP    FP_END0 
- FP_ENTER:RJMP   FP_ENTER0 
- ; 
- FP_1_UP: 
-         LDH     DATA,FLFP_SELECT 
-         TST     DATA 
-         BREQ    FP_FS0 
-         DEC     DATA 
-         STH     FLFP_SELECT,DATA 
-         LDH     DATA,FLFP_CURSOR 
-         TST     DATA 
-         BREQ    FP_1_UP1 
-         DEC     DATA 
-         STH     FLFP_CURSOR,DATA 
-         RJMP    FP_1_UP9 
- FP_1_UP1: 
-         LDH     DATA,FLFP_TOP 
-         DEC     DATA 
-         STH     FLFP_TOP,DATA 
- FP_1_UP9: 
-         RJMP    FP_FS1 
- ; 
- FP_1_DOWN: 
-         LDH     DATA,FLFP_SELECT 
-         LDH     TEMP,FLFP_TOTAL 
-         INC     DATA 
-         CP      DATA,TEMP 
-         BRCC    FP_FS0 
-         STH     FLFP_SELECT,DATA 
-         LDH     DATA,FLFP_CURSOR 
-         CPI     DATA,FLFP_HEIGHT-1 
-         BRCC    FP_1_DOWN1 
-         INC     DATA 
-         STH     FLFP_CURSOR,DATA 
-         RJMP    FP_1_DOWN9 
- FP_1_DOWN1: 
-         LDH     DATA,FLFP_TOP 
-         INC     DATA 
-         STH     FLFP_TOP,DATA 
- FP_1_DOWN9: 
-         RJMP    FP_FS1 
- ; 
- FP_P_UP: 
-         LDH     DATA,FLFP_SELECT 
-         SUBI    DATA,FLFP_HEIGHT-1 
-         BRCC    FP_P_UP1 
- FP_BEGIN: 
-         CLR     DATA 
- FP_P_UP1: 
-         STH     FLFP_SELECT,DATA 
-         STH     FLFP_TOP,DATA 
-         STH     FLFP_CURSOR,NULL 
-         RJMP    FP_FS1 
- ; 
- FP_P_DOWN: 
-         LDH     TEMP,FLFP_TOTAL 
-         CPI     TEMP,FLFP_HEIGHT+1 
-         BRCC    FP_P_DOWN1 
-         LDI     DATA,FLFP_HEIGHT-1 
-         STH     FLFP_SELECT,DATA 
-         STH     FLFP_TOP,NULL 
-         STH     FLFP_CURSOR,DATA 
-         RJMP    FP_P_DOWN9 
- FP_P_DOWN1: 
-         LDH     DATA,FLFP_SELECT 
-         ADDI    DATA,FLFP_HEIGHT-1 
-         CP      DATA,TEMP 
-         BRCS    FP_P_DOWN2 
-         MOV     DATA,TEMP 
-         DEC     DATA 
- FP_P_DOWN2: 
-         STH     FLFP_SELECT,DATA 
-         LDI     TEMP,FLFP_HEIGHT-1 
-         STH     FLFP_CURSOR,TEMP 
-         SUB     DATA,TEMP 
-         STH     FLFP_TOP,DATA 
- FP_P_DOWN9: 
-         RJMP    FP_FS1 
- ; 
- FP_END0: 
-         LDH     TEMP,FLFP_TOTAL 
-         CPI     TEMP,FLFP_HEIGHT+1 
-         BRCC    FP_END1 
-         LDI     DATA,FLFP_HEIGHT-1 
-         STH     FLFP_SELECT,DATA 
-         STH     FLFP_TOP,NULL 
-         STH     FLFP_CURSOR,DATA 
-         RJMP    FP_END9 
- FP_END1: 
-         MOV     DATA,TEMP 
-         DEC     DATA 
-         STH     FLFP_SELECT,DATA 
-         LDI     TEMP,FLFP_HEIGHT-1 
-         STH     FLFP_CURSOR,TEMP 
-         SUB     DATA,TEMP 
-         STH     FLFP_TOP,DATA 
- FP_END9: 
-         RJMP    FP_FS1 
- ; 
- FP_ENTER0: 
-         LDH     DATA,FLFP_SELECT 
-         LDIZ    FL_BUFFER 
-         LDI     TEMP,32 
-         MUL     DATA,TEMP 
-         ADD     ZL,R0 
-         ADC     ZH,R1 
-         LDD     DATA,Z+11 
-         TST     DATA 
-         BREQ    FP_ENTER9 
-         LDD     WL,Z+26 
-         LDD     WH,Z+27 
-         LDD     XL,Z+20 
-         LDD     XH,Z+21 
-         MOV     TEMP,WL 
-         OR      TEMP,WH 
-         OR      TEMP,XL 
-         OR      TEMP,XH 
-         BRNE    FP_ENTER1 
-         LDSW    FAT_ROOTCLS+0 
-         LDSX    FAT_ROOTCLS+2 
- FP_ENTER1: 
-         STSW    FAT_TEK_DIR+0 
-         STSX    FAT_TEK_DIR+2 
-         RCALL   FP_RD_DIR 
-         STH     FLFP_CURSOR,NULL 
-         RJMP    FP_FS1 
- FP_ENTER9: 
-         STH     FLFP_BUFADR0,ZL 
-         STH     FLFP_BUFADR1,ZH 
-         LDD     WL,Z+28 
-         LDD     WH,Z+29 
-         LDD     XL,Z+30 
-         LDI     DATA,LOW(16383) 
-         LDI     TEMP,HIGH(16383) 
-         ADD     WL,DATA 
-         ADC     WH,TEMP 
-         ADC     XL,NULL 
-         LSL     WH 
-         ROL     XL 
-         LSL     WH 
-         ROL     XL 
-         STH     FLSH_SIZE,XL 
-         STH     FLSH_START,NULL 
-   
-         LDH     XH,FLFP_CURSOR 
-         ADDI    XH,FLFP_YPOS 
-         LDI     XL,FLFP_XPOS 
-         CALL    SCR_SET_CURSOR 
-         LDI     TEMP,$1F 
-         LDI     COUNT,FLFP_WIDTH 
-         CALL    SCR_FILL_ATTR 
- ; 
- FLMAP10:RCALL   FL_SHOWCONTENT 
-   
- FLMAP11:CALL    WAITKEY 
-         CPI     DATA,KEY_UP 
-         BREQ    FLMAP_UP 
-         CPI     DATA,KEY_DOWN 
-         BREQ    FLMAP_DOWN 
-         CPI     DATA,KEY_LEFT 
-         BREQ    FLMAP_LEFT 
-         CPI     DATA,KEY_RIGHT 
-         BREQ    FLMAP_RIGHT 
-         CPI     DATA,KEY_ENTER 
-         BREQ    FLMAP_ENTER 
-         CPI     DATA,KEY_ESC 
-         BRNE    FLMAP11 
-         RJMP    FLMAP_EXIT 
- ; 
- FLMAP_LEFT: 
-         LDH     DATA,FLSH_START 
-         TST     DATA 
-         BREQ    FLMAP11 
-         DEC     DATA 
-         STH     FLSH_START,DATA 
-         RJMP    FLMAP10 
- ; 
- FLMAP_RIGHT: 
-         LDH     DATA,FLSH_START 
-         LDH     TEMP,FLSH_SIZE 
-         ADD     TEMP,DATA 
-         CPI     TEMP,32 
-         BRCC    FLMAP11 
-         INC     DATA 
-         STH     FLSH_START,DATA 
-         RJMP    FLMAP10 
- ; 
- FLMAP_UP: 
-         LDH     DATA,FLSH_START 
-         SUBI    DATA,4 
-         BRCC    FLMAP_U1 
-         CLR     DATA 
- FLMAP_U1: 
-         STH     FLSH_START,DATA 
-         RJMP    FLMAP10 
- ; 
- FLMAP_DOWN: 
-         LDH     DATA,FLSH_START 
-         LDH     TEMP,FLSH_SIZE 
-         ADD     DATA,TEMP 
-         ADDI    DATA,4 
-         CPI     DATA,32 
-         BRCS    FLMAP_D1 
-         LDI     DATA,32 
- FLMAP_D1: 
-         SUB     DATA,TEMP 
-         STH     FLSH_START,DATA 
-         RJMP    FLMAP10 
- ; 
- FLMAP_ENTER: 
-         LDIZ    FL_CONTENT 
-         LDH     DATA,FLSH_START 
-         LDI     TEMP,16 
-         MUL     DATA,TEMP 
-         ADD     ZL,R0 
-         ADC     ZH,R1 
-         STH     FLSH_ADR1,ZL 
-         STH     FLSH_ADR2,ZH 
-   
-         LDS     TEMP,FAT_BYTSSEC 
-         STS     FAT_NUMSECK,TEMP 
-   
-         LDH     ZL,FLFP_BUFADR0 
-         LDH     ZH,FLFP_BUFADR1 
-         LDD     WL,Z+26 
-         LDD     WH,Z+27 
-         LDD     XL,Z+20 
-         LDD     XH,Z+21 
-         STSW    FAT_TFILCLS+0 
-         STSX    FAT_TFILCLS+2 
-         LDD     WL,Z+28 
-         LDD     WH,Z+29 
-         LDD     XL,Z+30 
-         LDD     XH,Z+31 
-         LDI     TMP2,LOW(511) 
-         LDI     TMP3,HIGH(511) 
-         RCALL   HLDEPBC 
-         RCALL   BCDE200         ;получили кол-во секторов 
- ;------- 
- FL_FS0: LDI     COUNT,32 
-         SBIW    WL,32 
-         BRCS    FL_FS9 
-         BREQ    FL_FS9 
-         STH     FLSH_TEMP0,WL 
-         STH     FLSH_TEMP1,WH 
-         RCALL   FL_CPTR 
-   
-         LDI     COUNT,32 
-   
- FL_FS2: STH     FLSH_COUNT,COUNT 
-         LDS     DATA,FAT_NUMSECK 
-         DEC     DATA 
-         BRNE    FL_FS3 
-   
-         LDSW    FAT_TFILCLS+0 
-         LDSX    FAT_TFILCLS+2 
-         CALL    RDFATZP 
-         STSW    FAT_TFILCLS+0 
-         STSX    FAT_TFILCLS+2 
-         LDS     DATA,FAT_BYTSSEC 
- FL_FS3: STS     FAT_NUMSECK,DATA 
-   
-         LDH     COUNT,FLSH_COUNT 
-         DEC     COUNT 
-         BRNE    FL_FS2 
-   
-         LDH     WL,FLSH_TEMP0 
-         LDH     WH,FLSH_TEMP1 
-         RJMP    FL_FS0 
-   
- FL_FS9: ADIW    WL,32 
-         MOV     COUNT,WL 
-         RCALL   FL_CPTR 
- ; 
- FLMAP_EXIT: 
-         STH     FLSH_START,FF 
-         STH     FLSH_SIZE,NULL 
-         RCALL   FL_SHOWCONTENT 
-         RJMP    FLMENU1 
- ; 
- ;====================================== 
- ; 
- FL_CPTR:PUSH    COUNT 
-         LDI     TEMP,$01 
-         LDH     DATA,FLSH_START 
-         LSR     DATA 
-         LSR     DATA 
-         TST     DATA 
-         BREQ    FL_CPT1 
- FL_CPT2:LSL     TEMP 
-         DEC     DATA 
-         BRNE    FL_CPT2 
- FL_CPT1:LDH     DATA,FLSH_ERASE 
-         AND     DATA,TEMP 
-         BRNE    FL_CPT5 
-         LDH     DATA,FLSH_ERASE 
-         OR      DATA,TEMP 
-         STH     FLSH_ERASE,DATA 
-         LDIX    FL_CONTENT 
-         LDH     DATA,FLSH_START 
-         ANDI    DATA,0B00011100 
-         LDI     TEMP,16 
-         MUL     DATA,TEMP 
-         ADD     XL,R0 
-         ADC     XH,R1 
-         LDI     COUNT,4 
- FL_CPT4:ST      X+,NULL 
-         ST      X+,NULL 
-         ST      X+,NULL 
-         ST      X+,NULL 
-         ST      X+,NULL 
-         LDIZ    FL_EMPTY*2 
-         LDI     TEMP,11 
- FL_CPT3:LPM     DATA,Z+ 
-         ST      X+,DATA 
-         DEC     TEMP 
-         BRNE    FL_CPT3 
-         DEC     COUNT 
-         BRNE    FL_CPT4 
- FL_CPT5:POP     COUNT 
-   
-         LDS     DATA,FAT_BYTSSEC 
-         LDS     TEMP,FAT_NUMSECK 
-         CP      DATA,TEMP 
-         BREQ    FL_CPT6 
-         ORI     COUNT,$40 
- FL_CPT6:LDH     XL,FLSH_ADR1 
-         LDH     XH,FLSH_ADR2 
-         ST      X+,COUNT 
-         LDS     DATA,FAT_TFILCLS+0 
-         ST      X+,DATA 
-         LDS     DATA,FAT_TFILCLS+1 
-         ST      X+,DATA 
-         LDS     DATA,FAT_TFILCLS+2 
-         ST      X+,DATA 
-         LDS     DATA,FAT_TFILCLS+3 
-         ST      X+,DATA 
-         LDH     ZL,FLFP_BUFADR0 
-         LDH     ZH,FLFP_BUFADR1 
-         LDI     COUNT,11 
- FL_CPT7:LD      DATA,Z+ 
-         ST      X+,DATA 
-         DEC     COUNT 
-         BRNE    FL_CPT7 
-         STH     FLSH_ADR1,XL 
-         STH     FLSH_ADR2,XH 
-         LDH     DATA,FLMNU_FLAGS 
-         ORI     DATA,0B00010000 
-         STH     FLMNU_FLAGS,DATA 
-         LDH     DATA,FLSH_START 
-         INC     DATA 
-         STH     FLSH_START,DATA 
-         RET 
- ; 
- ;====================================== 
- ; 
- FLMENU_PUTCURSOR: 
-         LDH     DATA,FLSH_ERASE 
-         CPI     DATA,$FF 
-         BRNE    FPM_PC5 
-         LDIZ    MSG_FL_ERASECHIP*2 
-         CALL    SCR_PRINTSTRZ 
- FPM_PC5: 
-         CLR     COUNT 
-         LDI     TEMP,0B00000001 
- FPM_PC4:STH     FLSH_COUNT,COUNT 
-         STH     FLSH_TEMP0,TEMP 
-         MOV     XH,COUNT 
-         ADDI    XH,2 
-         LDI     XL,1 
-         CALL    SCR_SET_CURSOR 
-         LDH     DATA,FLSH_TEMP0 
-         LDH     XL,FLMNU_FLAGS 
-         LDI     TEMP,$9F 
-         AND     XL,DATA 
-         BRNE    FPM_PC1 
-         LDI     TEMP,$97 
- FPM_PC1:LDH     XL,FLMNU_CURSOR 
-         AND     DATA,XL 
-         BREQ    FPM_PC2 
-         LSL     XL 
-         BRCS    FPM_PC3 
-         LDI     TEMP,$F0 
-         RJMP    FPM_PC2 
- FPM_PC3:ANDI    TEMP,$1F 
- FPM_PC2:LDI     COUNT,15 
-         CALL    SCR_FILL_ATTR 
-         LDH     COUNT,FLSH_COUNT 
-         INC     COUNT 
-         LDH     TEMP,FLSH_TEMP0 
-         LSL     TEMP 
-         SBRS    TEMP,5 
-         RJMP    FPM_PC4 
-         RET 
- ; 
- ;====================================== 
- ; 
- FP_RD_DIR: 
-         LDIZ    FL_BUFFER 
-         STH     FLFP_BUFADR0,ZL 
-         STH     FLFP_BUFADR1,ZH 
-         STH     FLFP_TOTAL,NULL 
-         STH     FLFP_TOP,NULL 
-         STH     FLFP_SELECT,NULL 
-   
-         CALL    CALCKCLSDIR 
-         LDIW    0 
-         CALL    RDDIRSC 
- ;поиск файла в директории 
- ;       LDIW    0               ;номер описателя файла 
-         RJMP    FP_RDD2 
-   
- FP_RDD1:ADIW    WL,1            ;номерописателя++ 
-         ADIW    ZL,$20          ;следующий описатель 
-         CPI     ZH,HIGH(BUF4FAT+512); 
-                                 ;вылезли за сектор? 
-         BRNE    FP_RDD2         ;нет ещё 
-         CALL    RDDIRSC         ;считываем следующий 
-         BRNE    FP_RDDE         ;кончились сектора в директории 
-   
- FP_RDD2:LD      TEMP,Z          ;первый символ 
-         CPI     TEMP,$E5        ;удалён? 
-         BREQ    FP_RDD1 
-         TST     TEMP            ;пустой описатель? (конец списка) 
-         BREQ    FP_RDDE 
-         CPI     TEMP,$2E ;"." 
-         BRNE    FP_RDD3 
-         LDD     TEMP,Z+1 
-         CPI     TEMP,$2E ;"." 
-         BRNE    FP_RDD1 
-   
- FP_RDD3:LDD     DATA,Z+$0B      ;атрибуты 
-         ANDI    DATA,0B11011110 
-         BREQ    FP_RDD4         ;файл 
-         CPI     DATA,$10        ;директория 
-         BRNE    FP_RDD1 
-         RJMP    FP_RDD7 
-   
- FP_RDDE:RJMP    FP_RDDX 
-   
- FP_RDD4:LDD     DATA,Z+8 
-         CPI     DATA,$52 ;"R" 
-         BREQ    FP_RDD5 
-         CPI     DATA,$42 ;"B" 
-         BRNE    FP_RDD1 
-         LDD     DATA,Z+9 
-         CPI     DATA,$49 ;"I" 
-         BRNE    FP_RDD1 
-         LDD     DATA,Z+10 
-         CPI     DATA,$4E ;"N" 
-         BREQ    FP_RDD6 
- FP_RDD1A:RJMP   FP_RDD1 
- FP_RDD5:LDD     DATA,Z+9 
-         CPI     DATA,$4F ;"O" 
-         BRNE    FP_RDD1 
-         LDD     DATA,Z+10 
-         CPI     DATA,$4D ;"M" 
-         BRNE    FP_RDD1 
-   
- FP_RDD6:LDD     DATA,Z+31       ;длина 
-         TST     DATA 
-         BRNE    FP_RDD1 
-         LDD     DATA,Z+30 
-         LDD     R1,Z+29 
-         LDD     R0,Z+28 
-         SUB     R0,ONE 
-         SBC     R1,NULL 
-         SBC     DATA,NULL 
-         BRCS    FP_RDD1 
-         CPI     DATA,$08 
-         BRCC    FP_RDD1 
-   
- FP_RDD7:LDH     XL,FLFP_BUFADR0 
-         LDH     XH,FLFP_BUFADR1 
-         LDI     COUNT,32 
-         PUSHZ 
- FP_RDD8:LD      DATA,Z+ 
-         ST      X+,DATA 
-         DEC     COUNT 
-         BRNE    FP_RDD8 
-         POPZ 
-         STH     FLFP_BUFADR0,XL 
-         STH     FLFP_BUFADR1,XH 
-         LDH     COUNT,FLFP_TOTAL 
-         INC     COUNT 
-         STH     FLFP_TOTAL,COUNT 
-         CPI     COUNT,48 
-         BRCC    FP_SORT 
-         RJMP    FP_RDD1 
-   
- FP_RDDX:LDH     COUNT,FLFP_TOTAL 
-         CPI     COUNT,1 
-         BREQ    FP_NOSORT 
-         TST     COUNT 
-         BRNE    FP_SORT 
-         LDH     DATA,FLMNU_FLAGS 
-         ANDI    DATA,0B00000111 
-         STH     FLMNU_FLAGS,DATA 
-         RJMP    FP_NOFILES 
- FP_SORT: 
- FP_RDDY: 
-         LDIZ    FL_BUFFER 
-         CLR     TMP2 
-         LDH     TMP3,FLFP_TOTAL 
-         DEC     TMP3 
-         LD      DATA,Z 
-         CPI     DATA,$2E 
-         BRNE    FP_RDDZ 
-         INC     TMP2 
- FP_RDDZ:RCALL   FSORT 
- FP_NOFILES: 
- FP_NOSORT: 
- ; 
-         LDIZ    FL_BUFFER 
-         LDH     COUNT,FLFP_TOTAL 
- FP_LO2: LDD     DATA,Z+11 
-         ANDI    DATA,0B11011110 
-         STD     Z+11,DATA 
-         BRNE    FP_LO1 
-         LDI     TEMP,11 
- FP_LO3: LD      DATA,Z 
-         RCALL   TOLOWER 
-         ST      Z+,DATA 
-         DEC     TEMP 
-         BRNE    FP_LO3 
-         ADIW    ZL,21 
-         RJMP    FP_LO4 
- FP_LO1: ADIW    ZL,32 
- FP_LO4: DEC     COUNT 
-         BRNE    FP_LO2 
-         RET 
- ; 
- ;====================================== 
- ; 
- FP_OUT: CLR     COUNT 
- FPOUT00:PUSH    COUNT 
-         MOV     XH,COUNT 
-         ADDI    XH,FLFP_YPOS 
-         LDI     XL,FLFP_XPOS 
-         CALL    SCR_SET_CURSOR 
-   
-         LDH     DATA,FLFP_CURSOR 
-         LDI     TEMP,$9F 
-         CP      DATA,COUNT 
-         BRNE    FPOUT04 
-         LDI     TEMP,$F0 
- FPOUT04:CALL    SCR_SET_ATTR 
-   
-         LDH     DATA,FLFP_TOP 
-         ADD     DATA,COUNT 
-         LDH     TEMP,FLFP_TOTAL 
-         CP      DATA,TEMP 
-         BRCS    FPOUT01 
-         OR      COUNT,TEMP 
-         BRNE    FPOUT02 
-   
-         LDIZ    MLMSG_FP_NOFILES*2 
-         CALL    SCR_PRINTMLSTR 
-         LDI     COUNT,FLFP_WIDTH-12 ;22 
-         RJMP    FPOUT03 
- FPOUT02:LDI     COUNT,FLFP_WIDTH ;34 
- FPOUT03:LDI     DATA,$20 
-         CALL    SCR_FILL_CHAR 
-         RJMP    FPOUT90 
-   
- FPOUT01:LDIZ    FL_BUFFER 
-         LDI     TEMP,32 
-         MUL     DATA,TEMP 
-         ADD     ZL,R0 
-         ADC     ZH,R1 
-         PUSH    ZL 
-         LDI     COUNT,8 
-         CALL    SCR_PRNRAMSTRN 
-         LDI     DATA,$20 
-         CALL    SCR_PUTCHAR 
-         LDI     COUNT,3 
-         CALL    SCR_PRNRAMSTRN 
-         LDI     DATA,$B3 ;"│" 
-         CALL    SCR_PUTCHAR 
-         POP     ZL 
-         ;here Z=0 
-         PUSHZ 
-         LDD     DATA,Z+11 
-         TST     DATA 
-         BREQ    FPOUT11 
-         LDIZ    MSG_FP_DIR*2 
-         CALL    SCR_PRINTSTRZ 
-         RJMP    FPOUT12 
- FPOUT11:LDD     WL,Z+28 
-         LDD     WH,Z+29 
-         LDD     XL,Z+30 
-         RCALL   SCR_DEC1M 
-         LDI     DATA,$B3 ;"│" 
-         CALL    SCR_PUTCHAR 
- FPOUT12:POPZ 
-   
-         LDD     DATA,Z+24 
-         ANDI    DATA,$1F 
-         CALL    DECBYTE 
-         LDI     DATA,$2E ;"." 
-         CALL    SCR_PUTCHAR 
-         LDD     DATA,Z+24 
-         LDD     TEMP,Z+25 
-         ROR     TEMP 
-         ROR     DATA 
-         SWAP    DATA 
-         ANDI    DATA,$0F 
-         CALL    DECBYTE 
-         LDI     DATA,$2E ;"." 
-         CALL    SCR_PUTCHAR 
-         LDD     DATA,Z+25 
-         LSR     DATA 
-         ADDI    DATA,80 ;+1980 
- FPOUT14:CPI     DATA,100 
-         BRCS    FPOUT13 
-         SUBI    DATA,100 
-         RJMP    FPOUT14 
- FPOUT13:CALL    DECBYTE 
-         LDI     DATA,$B3 ;"│" 
-         CALL    SCR_PUTCHAR 
-   
-         LDD     DATA,Z+23 
-         LSR     DATA 
-         LSR     DATA 
-         LSR     DATA 
-         CALL    DECBYTE 
-         LDI     DATA,$3A ;":" 
-         CALL    SCR_PUTCHAR 
-         LDD     TEMP,Z+22 
-         LDD     DATA,Z+23 
-         ROL     TEMP 
-         ROL     DATA 
-         ROL     TEMP 
-         ROL     DATA 
-         ROL     TEMP 
-         ROL     DATA 
-         ANDI    DATA,$3F 
-         CALL    DECBYTE 
-   
- FPOUT90:POP     COUNT 
-         INC     COUNT 
-         CPI     COUNT,FLFP_HEIGHT 
-         BRCC    FPOUT91 
-         RJMP    FPOUT00 
- FPOUT91: 
-         RET 
- ; 
- ;====================================== 
- ;For CodePage866 only!!! 
- ;in:    DATA 
- ;out:   DATA 
- TOLOWER:CPI     DATA,$41 
-         BRCS    TOLOW9   ;$00..."@" 
-         CPI     DATA,$5B 
-         BRCS    TOLOW8   ;"A"..."Z" 
-         CPI     DATA,$80 
-         BRCS    TOLOW9   ;"["..."" 
-         CPI     DATA,$90 
-         BRCS    TOLOW8   ;"А"..."П" 
-         CPI     DATA,$A0 
-         BRCS    TOLOW7   ;"Р"..."Я" 
-         CPI     DATA,$F0 
-         BRCS    TOLOW9   ;"а"..."я" 
-         CPI     DATA,$F8 
-         BRCC    TOLOW9   ;$F8...$FF 
-         ORI     DATA,$01 ;"Ё"..."ў" 
-         RET 
- TOLOW7: ADDI    DATA,$50 
-         RET 
- TOLOW8: ADDI    DATA,$20 
- TOLOW9: RET 
- ; 
- ;====================================== 
- ;out number (up to 999999) in dec (right justify) 
- ;in:    XL,WH,WL == number 
- SCR_DEC1M: 
-         LDIZ    DEC1MTAB*2 
-         LDI     COUNT,5 
-         MOV     R2,ONE 
-         CLR     DATA 
- DEC1M5: LPM     R0,Z+ 
-         LPM     R1,Z+ 
- DEC1M2: SUB     WL,R0 
-         SBC     WH,R1 
-         SBC     XL,R2 
-         BRCS    DEC1M1 
-         INC     DATA 
-         RJMP    DEC1M2 
- DEC1M1: ADD     WL,R0 
-         ADC     WH,R1 
-         ADC     XL,R2 
-         TST     DATA 
-         BRNE    DEC1M3 
-         LDI     DATA,$20 
-         CALL    SCR_PUTCHAR 
-         CLR     DATA 
-         RJMP    DEC1M4 
- DEC1M3: ORI     DATA,$30 
-         CALL    SCR_PUTCHAR 
-         LDI     DATA,$30 
- DEC1M4: CLR     R2 
-         DEC     COUNT 
-         BRNE    DEC1M5 
-         MOV     DATA,WL 
-         ORI     DATA,$30 
-         JMP     SCR_PUTCHAR 
- DEC1MTAB:.DW    $86A0,10000,1000,100,10 
- ; 
- ;====================================== 
- ;in:    Z == buffer ptr 
- ;       TMP2 == lo index 
- ;       TMP3 == hi index 
- FSORT:  CP      TMP2,TMP3 
-         BRLT    FSRT_1 
-         RET 
- FSRT_1: MOV     WH,TMP2 
-         ADD     WH,TMP3 
-         LSR     WH 
-         MOV     WL,TMP2 
-         RCALL   FXCHNG 
-         MOV     R2,TMP2 
-         INC     R2 
-         MOV     R3,TMP3 
- FSRT_2: CP      R3,R2 
-         BRLT    FSRT_7 
- FSRT_3: CP      TMP3,R2 
-         BRLT    FSRT_4 
-         MOV     WL,TMP2 
-         MOV     WH,R2 
-         RCALL   FCOMP 
-         BRCS    FSRT_4 
-         INC     R2 
-         RJMP    FSRT_3 
- FSRT_4: CP      R3,TMP2 
-         BRLT    FSRT_5 
-         MOV     WL,TMP2 
-         MOV     WH,R3 
-         RCALL   FCOMP 
-         BRCC    FSRT_5 
-         DEC     R3 
-         RJMP    FSRT_4 
- FSRT_5: CP      R2,R3 
-         BRGE    FSRT_6 
-         MOV     WL,R2 
-         MOV     WH,R3 
-         RCALL   FXCHNG 
- FSRT_6: RJMP    FSRT_2 
- FSRT_7: MOV     WL,TMP2 
-         MOV     WH,R3 
-         RCALL   FXCHNG 
-         PUSH    R3 
-         PUSH    TMP3 
-         MOV     TMP3,R3 
-         DEC     TMP3 
-         RCALL   FSORT 
-         POP     TMP3 
-         POP     TMP2 
-         INC     TMP2 
-         RJMP    FSORT 
- ; 
- ;====================================== 
- ;in:    Z 
- ;       WL, WH - indexes 
- ;chng:  COUNT,DATA,TEMP (,X,R0,R1) 
- FXCHNG: 
-         CP      WL,WH 
-         BRNE    FXCHN_1 
-         RET 
- FXCHN_1: 
-         PUSHZ 
-         MOVW    XL,ZL 
-         LDI     COUNT,32 
-         MUL     WL,COUNT 
-         ADD     XL,R0 
-         ADC     XH,R1 
-         MUL     WH,COUNT 
-         ADD     ZL,R0 
-         ADC     ZH,R1 
- FXCHN_2:LD      DATA,X 
-         LD      TEMP,Z 
-         ST      X+,TEMP 
-         ST      Z+,DATA 
-         DEC     COUNT 
-         BRNE    FXCHN_2 
-         POPZ 
-         RET 
- ; 
- ;====================================== 
- ;in:    Z 
- ;       WL, WH - indexes 
- ;out:   sreg.C - SET - [WL]<[WH], CLR - [WL]>=[WH] 
- ;chng:  COUNT,DATA,TEMP (,X,R0,R1) 
- FCOMP:  PUSHZ 
-         MOVW    XL,ZL 
-         LDI     DATA,32 
-         MUL     WH,DATA 
-         ADD     XL,R0 
-         ADC     XH,R1 
-         MUL     WL,DATA 
-         ADD     ZL,R0 
-         ADC     ZH,R1 
-         LDD     TEMP,Z+11 
-         ANDI    TEMP,0B11011110 
-         ADDI    XL,11 
-         LD      DATA,X 
-         ANDI    DATA,0B11011110 
-         CP      DATA,TEMP 
-         BRNE    FCMP9 
-         SUBI    XL,11 
-         LDI     COUNT,11 
- FCMP1:  LD      DATA,X+ 
-         LD      TEMP,Z+ 
-         CP      TEMP,DATA 
-         BRNE    FCMP9 
-         DEC     COUNT 
-         BRNE    FCMP1 
- FCMP9:  POPZ 
-         RET 
- ; 
- ;====================================== 
- ; 
- FL_CRC_CMP: 
-         LPM     DATA,Z+ 
-         CP      DATA,R0 
-         BRNE    FL_CRCCMP1 
-         LPM     DATA,Z+ 
-         CP      DATA,R1 
-         BRNE    FL_CRCCMP1 
-         LPM     DATA,Z+ 
-         CP      DATA,R2 
-         BRNE    FL_CRCCMP1 
-         LPM     DATA,Z+ 
-         CP      DATA,R3 
-         BRNE    FL_CRCCMP1 
- FL_CRCCMP1: 
-         RET 
- ; 
- ;====================================== 
- ; 
- FL_SHOWCONTENT: 
-         LDIZ    FL_CONTENT 
-         CLR     COUNT 
-   
- FL_SHW1:STH     FLSH_TEMP2,COUNT 
-         RCALL   FL_SHW_SETCURSOR 
-         LD      DATA,Z 
-         LDI     TEMP,$0E 
-         SBRC    DATA,7 
-         LDI     TEMP,$07 
-         LDH     COUNT,FLSH_TEMP2 
-         LDH     DATA,FLSH_START 
-         CP      COUNT,DATA 
-         BRCS    FL_SHW5 
-         LDH     XH,FLSH_SIZE 
-         ADD     DATA,XH 
-         CP      COUNT,DATA 
-         BRCC    FL_SHW5 
-         LDI     TEMP,$F0 
- FL_SHW5:LDH     XH,FLSH_TEMP2 
-         LDI     DATA,$10 
-         SBRC    XH,2 
-         EOR     TEMP,DATA 
-         CALL    SCR_SET_ATTR 
-   
-         ADIW    ZL,5 
-         LDI     COUNT,8 
-         CALL    SCR_PRNRAMSTRN 
-         LDI     DATA,$20 
-         CALL    SCR_PUTCHAR 
-         LDI     COUNT,3 
-         CALL    SCR_PRNRAMSTRN 
-   
-         LDH     COUNT,FLSH_TEMP2 
-         INC     COUNT 
-         CPI     COUNT,32 
-         BRCS    FL_SHW1 
-         RET 
- ; 
- ;====================================== 
- ; 
- FL_SHW_SETCURSOR: 
-         MOV     XL,COUNT 
-         ANDI    XL,$03 
-         LDI     TEMP,13 
-         MUL     XL,TEMP 
-         MOV     XL,R0 
-         INC     XL 
-         MOV     XH,COUNT 
-         ANDI    XH,$1C 
-         LSR     XH 
-         LSR     XH 
-         ADDI    XH,15 
-         JMP     SCR_SET_CURSOR 
- ; 
- ;====================================== 
- ; 
-