Subversion Repositories ngs

Rev

Blame | Last modification | View Log | Download | RSS feed

 AS V1.42 Beta [Bld 78] - source file make_flasher2scl.a80 - page 1 - 1/17/2011 21:30:39


       1/       0 :                     
       2/       0 :                                     include macros.a80
(1)    1/       0 :                     
(1)    2/       0 :                                     RELAXED ON
(1)    3/       0 :                                     CPU Z80UNDOC
(1)    4/       0 :                     
(1)    5/       0 :                     DZ              MACRO DEFZ
(1)    6/       0 :                                     DB DEFZ,0
(1)    7/       0 :                                     ENDM 
(1)    8/       0 :                     
(1)    9/       0 :                     DC              MACRO DEFC
(1)   10/       0 :                                     IF STRLEN(DEFC)>1
(1)   11/       0 :                                     DB SUBSTR(DEFC,0,STRLEN(DEFC)-1)
(1)   12/       0 :                                     ENDIF
(1)   13/       0 :                                     IF STRLEN(DEFC)>0
(1)   14/       0 :                                     DB CHARFROMSTR(DEFC,STRLEN(DEFC)-1)|80H
(1)   15/       0 :                                     ENDIF
(1)   16/       0 :                                     ENDM
(1)   17/       0 :                     
(1)   18/       0 :                     SUM_HOB         MACRO STR,AA,BB,CC
(1)   19/       0 :                                     DB STR
(1)   20/       0 :                                     DW AA
(1)   21/       0 :                                     DW BB
(1)   22/       0 :                                     DW CC
(1)   23/       0 :                     $$I := 0
(1)   24/       0 :                     $$S := 0
(1)   25/       0 :                                     REPT 9
(1)   26/       0 :                     $$N := CHARFROMSTR (STR,STRLEN(STR)+$$S-9)
(1)   27/       0 :                     $$I := ($$I+$$S+$$N+($$N*256))&0XFFFF
(1)   28/       0 :                     $$S := $$S+1
(1)   29/       0 :                                     ENDM
(1)   30/       0 :                     $$I := ($$I+$$S+LOW (AA)+(LOW (AA)*0X100))&0XFFFF
(1)   31/       0 :                     $$S := $$S+1
(1)   32/       0 :                     $$I := ($$I+$$S+HIGH (AA)+(HIGH (AA)*0X100))&0XFFFF
(1)   33/       0 :                     $$S := $$S+1
(1)   34/       0 :                     $$I := ($$I+$$S+LOW (BB)+(LOW (BB)*0X100))&0XFFFF
(1)   35/       0 :                     $$S := $$S+1
(1)   36/       0 :                     $$I := ($$I+$$S+HIGH (BB)+(HIGH (BB)*0X100))&0XFFFF
(1)   37/       0 :                     $$S := $$S+1
(1)   38/       0 :                     $$I := ($$I+$$S+LOW (CC)+(LOW (CC)*0X100))&0XFFFF
(1)   39/       0 :                     $$S := $$S+1
(1)   40/       0 :                     $$I := ($$I+$$S+HIGH (CC)+(HIGH (CC)*0X100))&0XFFFF
(1)   41/       0 :                     $$S := $$S+1
(1)   42/       0 :                                     DW $$I
(1)   43/       0 :                                     ENDM
(1)   44/       0 :                     
(1)   45/       0 :                     DUPL            MACRO LEN,FILL
(1)   46/       0 :                     DUPL:
(1)   47/       0 :                     $$N             EQU (LEN) / 1024
(1)   48/       0 :                     $$M             EQU (LEN) # 1024
(1)   49/       0 :                                     REPT $$N
(1)   50/       0 :                                     DB 1024 DUP(FILL)
(1)   51/       0 :                                     ENDM
(1)   52/       0 :                                     IF $$M <> 0
(1)   53/       0 :                                     DB $$M DUP(FILL)
(1)   54/       0 :                                     ENDIF
(1)   55/       0 :                                     ENDM
(1)   56/       0 :                     
(1)   57/       0 :                     HIGH            FUNCTION X,((X >> 8) & 0XFF)
(1)   58/       0 :                     LOW             FUNCTION X,(X & 0XFF)
 AS V1.42 Beta [Bld 78] - source file make_flasher2scl.a80(macros.a80) - page 2 - 1/17/2011 21:30:39


(1)   59/       0 :                     
       3/       0 :                     
       4/       0 : =6000H              ADR_LOADING     EQU 0X6000                      ;адрес загрузки и компиляции
       5/       0 : =6000H              START_CODE      EQU ADR_LOADING
       6/       0 :                     
       7/    5EE9 :                                     ORG ADR_LOADING-0X117           ;(END_HEADER-START_SCL)
       8/    5EE9 :                     ;ЗАГОЛОВОК SCL ФАЙЛА
       9/    5EE9 : 53 49 4E 43 4C 41   START_SCL       DB "SINCLAIR",1,"FLASHNGSB"
                    49 52 01 46 4C 41 
                    53 48 4E 47 53 42 
      10/    5EFB : 35 00 35 00                         DW BASIC_FULL,BASIC_FULL
      11/    5EFF : 19                  FULL_SIZE       DB SIZE_SECTORS+1
      12/    5F00 :                     
      13/    5F00 :                                     include basic4monoloader.a80
(1)    1/    5F00 :                     
(1)    2/    5F00 :                     ;BASIC BLOCK FOR MONOLOADER
(1)    3/    5F00 :                     
(1)    4/    5F00 : 00 01 30 00         BASIC_START     DW 0X100,BASIC_END-STROKA1
(1)    5/    5F04 : E7 C3 A7 3A         STROKA1         DB 0XE7,0XC3,0XA7,0X3A                  ;BORDER NOT PI:
(1)    6/    5F08 : D9 C3 A7 3A                         DB 0XD9,0XC3,0XA7,0X3A                  ;INK NOT PI:
(1)    7/    5F0C : DA C3 A7 3A                         DB 0XDA,0XC3,0XA7,0X3A                  ;PAPER NOT INK:
(1)    8/    5F10 : FD B0 22 32 34 35                   DB 0XFD,0XB0,0X22,"24575",0X22,0X3A     ;CLEAR VAL "ADDRESS":
                    37 35 22 3A 
(1)    9/    5F1A : F9 C0 B0 22 32 33                   DB 0XF9,0XC0,0XB0,0X22,"23905",0X22     ;RANDOMIZE USR VAL "ADDRESS"
                    39 30 35 22 
(1)   10/    5F24 : 3A EA                               DB 0X3A,0XEA
(1)   11/    5F26 :                     
(1)   12/    5F26 : ED 5B F4 5C                         LD DE,(0X5CF4)
(1)   13/    5F2A : 01 05 18                            LD BC,SIZE_SECTORS*256+5
(1)   14/    5F2D : 21 00 60                            LD HL,ADR_LOADING
(1)   15/    5F30 : E5                                  PUSH HL
(1)   16/    5F31 : C3 13 3D                            JP 0X3D13
(1)   17/    5F34 :                     
(1)   18/    5F34 : 0D 80 AA            BASIC_END       DB 0X0D,0X80,0XAA
(1)   19/    5F37 : 01 00                               DW 1                                    ;НОМЕР СТРОКИ ЗАПУСКА
(1)   20/    5F39 :                     
(1)   21/    5F39 : =35H                BASIC_FULL      EQU BASIC_END-BASIC_START+1
(1)   22/    5F39 :                     
(1)   23/    5F39 : (MACRO)                             DUPL 0X100-BASIC_FULL-4,0               ;ДОПОЛНЕНИЕ ДО СЕКТОРА 256 БАЙТ
(1)   23/    5F39 :                     DUPL:
(1)   23/    5F39 : =0H                 $$N             EQU (0X100-BASIC_FULL-4) / 1024
(1)   23/    5F39 : =C7H                $$M             EQU (0X100-BASIC_FULL-4) # 1024
(1)   23/    5F39 :                                     REPT $$N
(1)   23/    5F39 :                                     DB 1024 DUP(0)
(1)   23/    5F39 :                                     ENDM
(1)   23/    5F39 : =>TRUE                              IF $$M <> 0
(1)   23/    5F39 : 00 00 00 00 00 00                   DB $$M DUP(0)
                    00 00 00 00 00 00 
                    00 00 00 00 00 00 
                    00 00 00 00 00 00 
                    00 00 00 00 00 00 
                    00 00 00 00 00 00 
                    00 00 00 00 00 00 
                    00 00 00 00 00 00 
                    00 00 00 00 00 00 
                    00 00 00 00 00 00 
                    00 00 00 00 00 00 
                    00 00 00 00 00 00 
                    00 00 00 00 00 00 
                    00 00 00 00 00 00 
 AS V1.42 Beta [Bld 78] - source file make_flasher2scl.a80(basic4monoloader.a80) - page 3 - 1/17/2011 21:30:39


                    00 00 00 00 00 00 
                    00 00 00 00 00 00 
                    00 00 00 00 00 00 
                    00 00 00 00 00 00 
                    00 00 00 00 00 00 
                    00 00 00 00 00 00 
                    00 00 00 00 00 00 
                    00 00 00 00 00 00 
                    00 00 00 00 00 00 
                    00 00 00 00 00 00 
                    00 00 00 00 00 00 
                    00 00 00 00 00 00 
                    00 00 00 00 00 00 
                    00 00 00 00 00 00 
                    00 00 00 00 00 00 
                    00 00 00 00 00 00 
                    00 00 00 00 00 00 
                    00 00 00 00 00 00 
                    00 00 00 00 00 00 
                    00 
(1)   23/    6000 : [23]                                ENDIF
(1)   24/    6000 :                             
(1)   25/    6000 :                             
      14/    6000 :                     
      15/    6000 :                     ;END_HEADER
      16/    6000 :                             
      17/    6000 :                                     ORG ADR_LOADING
      18/    6000 :                     
      19/    6000 : 21 00 60                            LD HL,$
      20/    6003 : E5                                  PUSH HL
      21/    6004 : 21 21 60                            LD HL,START_UNPACK
      22/    6007 : 11 00 5B                            LD DE,0X5B00
      23/    600A : 01 6E 00                            LD BC,END_UNPACK-START_UNPACK
      24/    600D : D5                                  PUSH DE
      25/    600E : ED B0                               LDIR
      26/    6010 : 21 2B 77                            LD HL,END_COD-1
      27/    6013 : 11 FF FF                            LD DE,0XFFFF
      28/    6016 : 01 9D 16                            LD BC,END_COD-END_UNPACK
      29/    6019 : ED B8                               LDDR
      30/    601B : 21 00 60                            LD HL,ADR_LOADING
      31/    601E : EB                                  EX DE,HL
      32/    601F : 23                                  INC HL
      33/    6020 : C9                                  RET
      34/    6021 :                                     
      35/    6021 :                     START_UNPACK    include dec40.a80
(1)    1/    6021 :                     ;Z80 depacker for megalz V4 packed files   (C) fyrex^mhm
(1)    2/    6021 :                     
(1)    3/    6021 :                     ; DESCRIPTION:
(1)    4/    6021 :                     ;
(1)    5/    6021 :                     ; Depacker is fully relocatable, not self-modifying,
(1)    6/    6021 :                     ;it's length is 110 bytes starting from DEC40.
(1)    7/    6021 :                     ;Register usage: AF,AF',BC,DE,HL. Must be CALL'ed, return is done by RET.
(1)    8/    6021 :                     ;Provide extra stack location for store 2 bytes (1 word). Depacker does not
(1)    9/    6021 :                     ;disable or enable interrupts, as well as could be interrupted at any time
(1)   10/    6021 :                     ;(no f*cking wicked stack usage :).
(1)   11/    6021 :                     
(1)   12/    6021 :                     ; USAGE:
(1)   13/    6021 :                     ;
(1)   14/    6021 :                     ; - put depacker anywhere you want,
(1)   15/    6021 :                     ; - put starting address of packed block in HL,
 AS V1.42 Beta [Bld 78] - source file make_flasher2scl.a80(dec40.a80) - page 4 - 1/17/2011 21:30:39


(1)   16/    6021 :                     ; - put location where you want data to be depacked in DE,
(1)   17/    6021 :                     ;   (much like LDIR command, but without BC)
(1)   18/    6021 :                     ; - make CALL to depacker (DEC40).
(1)   19/    6021 :                     ; - enjoy! ;)
(1)   20/    6021 :                     
(1)   21/    6021 :                     ; PRECAUTIONS:
(1)   22/    6021 :                     ;
(1)   23/    6021 :                     ; Be very careful if packed and depacked blocks coincide somewhere in memory.
(1)   24/    6021 :                     ;Here are some advices:
(1)   25/    6021 :                     ;
(1)   26/    6021 :                     ; 1. put packed block to the highest addresses possible.
(1)   27/    6021 :                     ;     Best if last byte of packed block has address #FFFF.
(1)   28/    6021 :                     ;
(1)   29/    6021 :                     ; 2. Leave some gap between ends of packed and depacked block.
(1)   30/    6021 :                     ;     For example, last byte of depacked block at #FF00,
(1)   31/    6021 :                     ;     last byte of packed block at #FFFF.
(1)   32/    6021 :                     ;
(1)   33/    6021 :                     ; 3. Place nonpackable data to the end of block.
(1)   34/    6021 :                     ;
(1)   35/    6021 :                     ; 4. Always check whether depacking occurs OK and neither corrupts depacked data
(1)   36/    6021 :                     ;     nor hangs computer.
(1)   37/    6021 :                     ;
(1)   38/    6021 :                     
(1)   39/    6021 :                     DEC40
(1)   40/    6021 : 3E 80                       LD      A,0X80
(1)   41/    6023 : 08                          EX      AF,AF'
(1)   42/    6024 : ED A0               MS      LDI
(1)   43/    6026 : 01 FF 02            M0      LD      BC,0X2FF
(1)   44/    6029 : 08                  M1      EX      AF,AF'
(1)   45/    602A : 87                  M1X     ADD     A,A
(1)   46/    602B : 20 03                       JR      NZ,M2
(1)   47/    602D : 7E                          LD      A,(HL)
(1)   48/    602E : 23                          INC     HL
(1)   49/    602F : 17                          RLA
(1)   50/    6030 : CB 11               M2      RL      C
(1)   51/    6032 : 30 F6                       JR      NC,M1X
(1)   52/    6034 : 08                          EX      AF,AF'
(1)   53/    6035 : 10 0F                       DJNZ    X2
(1)   54/    6037 : 3E 02                       LD      A,2
(1)   55/    6039 : CB 29                       SRA     C
(1)   56/    603B : 38 18                       JR      C,N1
(1)   57/    603D : 3C                          INC     A
(1)   58/    603E : 0C                          INC     C
(1)   59/    603F : 28 0F                       JR      Z,N2
(1)   60/    6041 : 01 3F 03                    LD      BC,0X33F
(1)   61/    6044 : 18 E3                       JR      M1
(1)   62/    6046 :                     
(1)   63/    6046 : 10 25               X2      DJNZ    X3
(1)   64/    6048 : CB 39                       SRL     C
(1)   65/    604A : 38 D8                       JR      C,MS
(1)   66/    604C : 04                          INC     B
(1)   67/    604D : 18 DA                       JR      M1
(1)   68/    604F :                     X6
(1)   69/    604F : 81                          ADD     A,C
(1)   70/    6050 :                     N2
(1)   71/    6050 : 01 FF 04                    LD      BC,0X4FF
(1)   72/    6053 : 18 D4                       JR      M1
(1)   73/    6055 :                     N1
(1)   74/    6055 : 0C                          INC     C
(1)   75/    6056 : 20 28                       JR      NZ,M4
 AS V1.42 Beta [Bld 78] - source file make_flasher2scl.a80(dec40.a80) - page 5 - 1/17/2011 21:30:39


(1)   76/    6058 : 08                          EX      AF,AF'
(1)   77/    6059 : 04                          INC     B
(1)   78/    605A : CB 19               N5      RR      C
(1)   79/    605C : D8                          RET     C
(1)   80/    605D : CB 10                       RL      B
(1)   81/    605F : 87                          ADD     A,A
(1)   82/    6060 : 20 03                       JR      NZ,N6
(1)   83/    6062 : 7E                          LD      A,(HL)
(1)   84/    6063 : 23                          INC     HL
(1)   85/    6064 : 17                          RLA
(1)   86/    6065 : 30 F3               N6      JR      NC,N5
(1)   87/    6067 : 08                          EX      AF,AF'
(1)   88/    6068 : 80                          ADD     A,B
(1)   89/    6069 : 06 06                       LD      B,6
(1)   90/    606B : 18 BC                       JR      M1
(1)   91/    606D :                     X3
(1)   92/    606D : 10 04                       DJNZ    X4
(1)   93/    606F : 3E 01                       LD      A,1
(1)   94/    6071 : 18 0F                       JR      M3
(1)   95/    6073 : 10 08               X4      DJNZ    X5
(1)   96/    6075 : 0C                          INC     C
(1)   97/    6076 : 20 08                       JR      NZ,M4
(1)   98/    6078 : 01 1F 05                    LD      BC,0X51F
(1)   99/    607B : 18 AC                       JR      M1
(1)  100/    607D :                     X5
(1)  101/    607D : 10 D0                       DJNZ    X6
(1)  102/    607F : 41                          LD      B,C
(1)  103/    6080 : 4E                  M4      LD      C,(HL)
(1)  104/    6081 : 23                          INC     HL
(1)  105/    6082 : 05                  M3      DEC     B
(1)  106/    6083 : E5                          PUSH    HL
(1)  107/    6084 : 69                          LD      L,C
(1)  108/    6085 : 60                          LD      H,B
(1)  109/    6086 : 19                          ADD     HL,DE
(1)  110/    6087 : 4F                          LD      C,A
(1)  111/    6088 : 06 00                       LD      B,0
(1)  112/    608A : ED B0                       LDIR
(1)  113/    608C : E1                          POP     HL
(1)  114/    608D : 18 97                       JR      M0
(1)  115/    608F :                     END_DEC40
(1)  116/    608F :                     
      36/    608F :                     END_UNPACK
      37/    608F :                                     binclude flasher_pack.rom       ;имя пакованной проги
      38/    772C :                     END_COD
      39/    772C :                     
      40/    772C : =>TRUE                              IF (END_COD-ADR_LOADING)&0XFF
      41/    772C : =18H                SIZE_SECTORS    EQU ((END_COD-ADR_LOADING)>>8)+1
      42/    772C : =>FALSE                             ELSE
      43/    772C :                     SIZE_SECTORS    EQU ((END_COD-ADR_LOADING)>>8)
      44/    772C : [40]                                ENDIF
      45/    772C :                     
      46/    772C :                     
 AS V1.42 Beta [Bld 78] - source file make_flasher2scl.a80 - page 6 - 1/17/2011 21:30:39


  symbol table (* = unused):
  ------------------------

 ADR_LOADING :                 6000 - | *ARCHITECTURE :  i386-unknown-win32 - |
 BASIC_END :                   5F34 C |  BASIC_FULL :                    35 - |
 BASIC_START :                 5F00 C | *BIGENDIAN :                      0 - |
*BRANCHEXT :                      0 - | *CASESENSITIVE :                  1 - |
*CONSTPI :        3.141592653589793 - | *DATE :                   1/17/2011 - |
*DEC40 :                       6021 C |  END_COD :                     772C C |
*END_DEC40 :                   608F C |  END_UNPACK :                  608F C |
*FALSE :                          0 - | *FULLPMMU :                       1 - |
*FULL_SIZE :                   5EFF C | *HAS64 :                          1 - |
*HASDSP :                         0 - | *HASFPU :                         0 - |
*HASPMMU :                        0 - | *INEXTMODE :                      0 - |
*INLWORDMODE :                    0 - | *INMAXMODE :                      0 - |
*INSRCMODE :                      0 - | *INSUPMODE :                      0 - |
*LISTON :                         1 - |  M0 :                          6026 C |
 M1 :                          6029 C |  M14 :                           C7 - |
 M1X :                         602A C |  M2 :                          6030 C |
 M3 :                          6082 C |  M4 :                          6080 C |
*MACEXP :                         1 - | *MOMCPU :                      80DC - |
*MOMCPUNAME :              Z80UNDOC - |  MS :                          6024 C |
 N1 :                          6055 C |  N14 :                            0 - |
 N2 :                          6050 C |  N5 :                          605A C |
 N6 :                          6065 C | *NESTMAX :                      100 - |
*PACKING :                        0 - | *PADDING :                        1 - |
*RELAXED :                        1 - |  SIZE_SECTORS :                  18 - |
*START_CODE :                  6000 - | *START_SCL :                   5EE9 C |
 START_UNPACK :                6021 C |  STROKA1 :                     5F04 C |
*TIME :                    21:30:39 - | *TRUE :                           1 - |
*VERSION :                     142F - |  X2 :                          6046 C |
 X3 :                          606D C |  X4 :                          6073 C |
 X5 :                          607D C |  X6 :                          604F C |

     60 symbols
     33 unused symbols

 AS V1.42 Beta [Bld 78] - source file make_flasher2scl.a80 - page 7 - 1/17/2011 21:30:39


  defined macros:
  ---------------

DC                                    | DUPL                                 
DZ                                    | SUM_HOB                              

      4 macros

 AS V1.42 Beta [Bld 78] - source file make_flasher2scl.a80 - page 8 - 1/17/2011 21:30:39


  defined functions:
  ------------------

LOW                                   | HIGH                                 

 AS V1.42 Beta [Bld 78] - source file make_flasher2scl.a80 - page 9 - 1/17/2011 21:30:39


  codepages:
  ----------

STANDARD (0 changed characters)


0.06 seconds assembly time

    246 lines source file
    255 lines incl. macro expansions
      2 passes
      0 errors
      0 warnings