Something about IE0 / IE1 bits and R#19 (Development Fórums MSX)MSX Resource Center            
                    
English Nederlands Espa�ol Portugu�s Russian              
 Notícias
   Página principal
  Arquivo de notícias
  Tópicos de notícias

 Recursos
   Fórums MSX
  Artigos
  Reviews
  Reportes de feiras
  Fotografias
  Feiras e encontros
  Enquetes
  Links
  Procurar

 Software
   Downloads
  Web-Loja

 MRC
   Quem somos nós
  Entre para nosso time
  Doações
  Políticas
  Contate-nos
  Faça um Link para nós
  Estatísticas

 Procurar
 
  

  

 Login
 

Nome do Usuário

Senha




Você ainda não tem uma conta? Torne-se um amigo-MSX e registre uma conta agora!


 Estatísticas
 

Existem 51 convidados e 1 Amigo do MSX online

Você é um usuário anônimo.
 

Fórums MSX


Fórums MSX

Development - Something about IE0 / IE1 bits and R#19

Vai para pág. ( Página Anterior 1 | 2 )
Autor

Something about IE0 / IE1 bits and R#19

Edwin
msx professional
Posts: 626
Postado em: 29 Setembro 2008, 22:33   
If it's exotic, it's probably wbass2 format. There is a wb2txt app somewhere.

Vincent van Dam
msx addict
Posts: 382
Postado em: 29 Setembro 2008, 23:17   
It could be in compass also, wb2txt can be found here.
Vincent van Dam
msx addict
Posts: 382
Postado em: 29 Setembro 2008, 23:17   
(double post)
ARTRAG
msx master
Posts: 1737
Postado em: 29 Setembro 2008, 23:20   
it is wbass2, i used wb2txt
thanks!
monant
msx user
Posts: 33
Postado em: 29 Setembro 2008, 23:22   
I used wbass2 assembler

forgive the bad style..of the following text
&HD000            ;[ C  = &h9A , HL = PALTBL , B = Hint counter]
&HD000            ;[ Start from Color 0 , Palette Pointer automatically increments]
&HD000            ;[ C' = &h99 , HL'= ADJTBL , B' = reg.18 , D' = scanLINE counter , E' = reg.19]
&HD000  EDA3      INTH:   OUTI                  ;[ VDP Port 02   data for Palette Red and Blu]
&HD002  EDA3              OUTI                  ;[ VDP Port 02   data for Palette Green]
&HD004  D9                EXX                   ;[ Z80 ALTERNATE REGISTERS]
&HD005  7E                LD    A,(HL)          ;[ read data from ADJTBL]
&HD006  ED79              OUT   (C),A           ;[ VDP Port 01 write data]
&HD008  ED41              OUT   (C),B           ;[ VDP Port 01 to reg.18    adjust register]
&HD00A  23                INC   HL              ;[ HL' points to next data ]
&HD00B  ED78              IN    A,(C)           ;[ VDP Port 01 read status reg.1 allow next Hint]
&HD00D  14                INC   D               ;[ D' Points to next scanLINE ]
&HD00E  ED51              OUT   (C),D           ;[ VDP Port 01 ]
&HD010  ED59              OUT   (C),E           ;[ VDP Port 01 reg.19    Hint LINE register ]
&HD012  D9                EXX                   ;[Z80 MAIN REGISTERS]
&HD013  04                INC   B               ;[ Trick! OUTI + OUTI: B=B-2 ,INC B: B = B+1]
&HD014  CA19D0            JP    Z,AFTER         ;[ so B = B-1 ,if B=0 zero then Hints finished]
&HD017  FB                EI                    ;[ else Enable Z80 int and go back to MAIN LOOP]
&HD018  C9                RET
&HD019  CD02D1    AFTER:  CALL  HINTOF          ;[LINE 0-190 Upper Frame done!, Disable VDP Hint]
&HD01C  3EC0              LD    A,192           ;{  now OVERSCAN EFFECT
&HD01E  CD96D1            CALL  WINT            ;[wait scanline 192,VDP is looking for limit=212]
&HD021  CD84D1            CALL  OVR192          ;[set limit=192 VDP still looking for limit=212]
&HD024  3ED4              LD    A,212
&HD026  CD96D1            CALL  WINT            ;[wait scanline 212,VDP is looking for limit=192]
&HD029  CD8DD1            CALL  OVR212          ;[set limit=212 VDP still looking for limit=192]}
&HD02C  3ADAD0            LD    A,(LUN)         ;[restore B = Hint counter]
&HD02F  47                LD    B,A
&HD030  3AE5D0            LD    A,(FRMCNT)      ;[increment frames counter]
&HD033  3C                INC   A
&HD034  32E5D0            LD    (FRMCNT),A      ;[save it]
&HD037  FED4              CP    212             ;[ 212 frames done?]
&HD039  CA2DD1            JP    Z,RSTLN0        ;[ Yes ,jump to RSTLN0 restart from frame 0]
&HD03C  2AE1D0            LD    HL,(PALPTR)     ;[ No ,start the SHIFTING COLORS EFFECT ]
&HD03F  23                INC   HL              ;[ PALPTR =PALPTR+2 ,point to next color]
&HD040  23                INC   HL
&HD041  22E1D0            LD    (PALPTR),HL     ;[ Store it ]
&HD044  D9                EXX                   ;[ Z80 ALTERNATE REGISTERS]
&HD045  2ADFD0            LD    HL,(ADJPTR)     ;[ This is the WAVE EFFECT ]
&HD048  23                INC   HL              ;[ ADJPTR =ADJPTR+1 ,point to next value]
&HD049  22DFD0            LD    (ADJPTR),HL     ;[ Store it]
&HD04C  3AD9D0    GAMMA2: LD    A,(LINE)        ;[ begin from start]
&HD04F  57                LD    D,A             ;[ D' = A]
&HD050  ED51              OUT   (C),D           ;[ VDP Port 01  write data to]
&HD052  ED59              OUT   (C),E           ;[ VDP Port 01  reg.19 Hint LINE register ]
&HD054  D9                EXX                   ;[ Z80 MAIN REGISTERS]
&HD055  AF                XOR   A               ;[ A= 0                 set color 0]
&HD056  D39B              OUT   (&H9B),A        ;[ VDP Port 03 =reg.16  to Palette Pointer ]
&HD058  CDE9D0            CALL  STOP            ;[ Check if ESC key is pressed ]
&HD05B  FE00              CP    0
&HD05D  CA6BD0            JP    Z,BASIC         ;[ yes ? go to BASIC ]
&HD060  CDA4D1            CALL  SETPAG
&HD063  CD41D1            CALL  MOVSPR
&HD066  CDF6D0            CALL  HINTON
&HD069  FB                EI
&HD06A  C9                RET
&HD06B  0E99      BASIC:  LD    C,&H99          ;[ read status reg.0 ]
&HD06D  ED78              IN    A,(C)           ;[ to clear pending interrupts]
&HD06F  CD02D1            CALL  HINTOF          ;[ disable VDP Hint ]
&HD072  CD0ED1            CALL  VINTON          ;[ enable  VDP Vint ]
&HD075  AF                XOR   A               ;[ select status register 0]
&HD076  CD26D1            CALL  STAT
&HD079  3AFDD1            LD    A,(SECSLT)      ;[ restore secondary slot register]
&HD07C  32FFFF            LD    (&HFFFF),A
&HD07F  3AFED1            LD    A,(PRISLT)      ;[ restore primary slot register]
&HD082  D3A8              OUT   (&HA8),A
&HD084  DDE1              POP   IX              ;[ remove garbage from stack ]
&HD086  FB                EI                    ;[ enable Z80 int ]
&HD087  C9                RET                   ;[ GO BACK TO BASIC]
&HD088  FB        SETUP:  EI                    ;[enable Z80 int...VDP Vint must be enabled!]
&HD089  76                HALT                  ;[wait for a Vint form VDP]
&HD08A  F3                DI                    ;[disable Z80 int]
&HD08B  DB99              IN    A,(&H99)        ;[read status reg.0 to enable next interrupts]
&HD08D  CD1AD1            CALL  VINTOF          ;[disable VDP Vint]
&HD090  CDD3D1            CALL  RAMSEL          ;[slot select.......Minimum RAM required 64K !]
&HD093  2100D0            LD    HL,INTH         ;{[move Hint Routine from page 3 to page 0]
&HD096  113800            LD    DE,&H38
&HD099  010001            LD    BC,256
&HD09C  EDB0              LDIR                  ;}
&HD09E  D9                EXX                   ;[Z80 ALTERNATE REGISTERS]
&HD09F  0E99              LD    C,&H99          ;[ C'= VDP Port 01 ]
&HD0A1  3AD9D0            LD    A,(LINE)        ;[ A = start interrupt from LINE +1]
&HD0A4  57                LD    D,A             ;[ D'= A]
&HD0A5  0692              LD    B,18+128        ;[ B'= VDP reg.18 (adjust register)]
&HD0A7  1E93              LD    E,19+128        ;[ E'= VDP reg.19 (Hint line register)]
&HD0A9  2ADBD0            LD    HL,(ADJTBL)     ;[ HL'= points to an array of bytes for reg.18]
&HD0AC  22DFD0            LD    (ADJPTR),HL     ;[ save it to location ADJPTR ]
&HD0AF  3E01              LD    A,1             ;[status register 1]
&HD0B1  CD26D1            CALL  STAT            ;[select it...work with STATUS reg.1]
&HD0B4  ED78              IN    A,(C)           ;[read it to clear possible pending interrupts]
&HD0B6  ED51              OUT   (C),D           ;[set Hint line]
&HD0B8  ED59              OUT   (C),E           ;[set Hint line]
&HD0BA  3E90              LD    A,16+128        ;[ VDP reg.16 (color palette pointer)]
&HD0BC  ED79              OUT   (C),A           ;[10XXXXXX indirect access NON autoincr. mode]
&HD0BE  3E91              LD    A,17+128        ;[ VDP reg.17 (register pointer) ]
&HD0C0  ED79              OUT   (C),A           ;[ VDP port 03 = reg.16]
&HD0C2  D9                EXX                   ;[Z80 MAIN REGISTERS]
&HD0C3  2ADDD0            LD    HL,(PALTBL)     ;[ HL= points to an array of bytes for Palette]
&HD0C6  22E1D0            LD    (PALPTR),HL     ;[ save it to location PALPTR]
&HD0C9  CDF6D0            CALL  HINTON          ;[enable VDP hint]
&HD0CC  0E9A              LD    C,&H9A          ;[ C = VDP Port 02]
&HD0CE  3ADAD0            LD    A,(LUN)         ;[ A = number of interrupt to be generated]
&HD0D1  47                LD    B,A             ;[ B = A]
&HD0D2  AF                XOR   A               ;[ A = 0]
&HD0D3  D39B              OUT   (&H9B),A        ;[ VDP reg.16 = 0, set palette pointer to 0]
&HD0D5  FB                EI                    ;[enable Z80 interrupts]
&HD0D6  C3D6D0    LOOP:   JP    LOOP            ;[MAIN LOOP....wait for interrupts]
&HD0D9  FF        LINE:   DB    255             ;[255 Hint at scanLINE0 ,0 Hint at scanLINE1...]
&HD0DA  BE        LUN:    DB    190             ;[number of Hint ,safe value for Overscan]
&HD0DB  00C4      ADJTBL: DB    0,&HC4
&HD0DD  00C0      PALTBL: DB    0,&HC0
&HD0DF  0000      ADJPTR: DB    0,0
&HD0E1  0000      PALPTR: DB    0,0
&HD0E3  00C8      SPRTBL: DB    0,&HC8
&HD0E5  D4        FRMCNT: DB    212
&HD0E6  00        PAG:    DB    0
&HD0E7  0A        DELAY:  DB    10
&HD0E8  0A        DELBCK: DB    10
&HD0E9  DBAA      STOP:   IN    A,(&HAA)        ; [ check if ESC key is pressed ]
&HD0EB  E6F0              AND   &B11110000
&HD0ED  C607              ADD   A,7
&HD0EF  D3AA              OUT   (&HAA),A
&HD0F1  DBA9              IN    A,(&HA9)
&HD0F3  E604              AND   4
&HD0F5  C9                RET
&HD0F6  3ADFF3    HINTON: LD    A,(&HF3DF)      ;[enable VDP Hint]
&HD0F9  CBE7              SET   4,A
&HD0FB  D399              OUT   (&H99),A
&HD0FD  3E80              LD    A,0+128
&HD0FF  D399              OUT   (&H99),A
&HD101  C9                RET
&HD102  3ADFF3    HINTOF: LD    A,(&HF3DF)      ;[disable VDP Hint]
&HD105  CBA7              RES   4,A
&HD107  D399              OUT   (&H99),A
&HD109  3E80              LD    A,0+128
&HD10B  D399              OUT   (&H99),A
&HD10D  C9                RET
&HD10E  3AE0F3    VINTON: LD    A,(&HF3E0)      ;[enable VDP Vint]
&HD111  CBEF              SET   5,A
&HD113  D399              OUT   (&H99),A
&HD115  3E81              LD    A,1+128
&HD117  D399              OUT   (&H99),A
&HD119  C9                RET
&HD11A  3AE0F3    VINTOF: LD    A,(&HF3E0)      ;[disable VDP Vint]
&HD11D  CBAF              RES   5,A
&HD11F  D399              OUT   (&H99),A
&HD121  3E81              LD    A,1+128
&HD123  D399              OUT   (&H99),A
&HD125  C9                RET
&HD126  D399      STAT:   OUT   (&H99),A        ;[select reg.A   STATUS register]
&HD128  3E8F              LD    A,15+128
&HD12A  D399              OUT   (&H99),A
&HD12C  C9                RET
&HD12D  2ADDD0    RSTLN0: LD    HL,(PALTBL)     ;[ restore PALTBL pointer ]
&HD130  22E1D0            LD    (PALPTR),HL
&HD133  AF                XOR   A               ;[ reset frames counter ]
&HD134  32E5D0            LD    (FRMCNT),A
&HD137  D9                EXX                   ;[ Z80 ALTERNATE REGISTERS ]
&HD138  2ADBD0            LD    HL,(ADJTBL)     ;[restore ADJTBL pointer ]
&HD13B  22DFD0            LD    (ADJPTR),HL
&HD13E  C34CD0            JP    GAMMA2          ;[ return to GAMMA2]
&HD141  E5        MOVSPR: PUSH  HL
&HD142  C5                PUSH  BC
&HD143  2AE3D0            LD    HL,(SPRTBL)
&HD146  110400            LD    DE,4
&HD149  AF                XOR   A
&HD14A  F5        ADDIZ:  PUSH  AF
&HD14B  7E                LD    A,(HL)
&HD14C  FED8              CP    &HD8
&HD14E  C252D1            JP    NZ,SKIP
&HD151  34                INC   (HL)
&HD152  34        SKIP:   INC   (HL)
&HD153  19                ADD   HL,DE
&HD154  F1                POP   AF
&HD155  3C                INC   A
&HD156  FE20              CP    32
&HD158  C24AD1            JP    NZ,ADDIZ
&HD15B  210076            LD    HL,&H7600       ;base (28)
&HD15E  AF                XOR   A
&HD15F  CB04              RLC   H
&HD161  17                RLA
&HD162  CB04              RLC   H
&HD164  17                RLA
&HD165  CB3C              SRL   H
&HD167  CB3C              SRL   H
&HD169  D399              OUT   (&H99),A
&HD16B  3E8E              LD    A,14+128
&HD16D  D399              OUT   (&H99),A
&HD16F  7D                LD    A,L
&HD170  00                NOP
&HD171  D399              OUT   (&H99),A
&HD173  7C                LD    A,H
&HD174  F640              OR    64
&HD176  D399              OUT   (&H99),A
&HD178  0680              LD    B,128
&HD17A  0E98              LD    C,&H98
&HD17C  2AE3D0            LD    HL,(SPRTBL)
&HD17F  EDB3              OTIR
&HD181  C1                POP   BC
&HD182  E1                POP   HL
&HD183  C9                RET
&HD184  3E02      OVR192: LD    A,2             ;[ set screen height to 192 ]
&HD186  D399              OUT   (&H99),A
&HD188  3E89              LD    A,9+128
&HD18A  D399              OUT   (&H99),A
&HD18C  C9                RET
&HD18D  3E82      OVR212: LD    A,2+128         ;[ set screen height to 212 ]
&HD18F  D399              OUT   (&H99),A
&HD191  3E89              LD    A,9+128
&HD193  D399              OUT   (&H99),A
&HD195  C9                RET
&HD196  D399      WINT:   OUT   (&H99),A        ;[ Z80 reg.A = LINE to wait for]
&HD198  3E93              LD    A,&H93          ;[ VDP reg.19 write ]
&HD19A  D399              OUT   (&H99),A
&HD19C  DB99      WINT1:  IN    A,(&H99)        ;[ wait until LINE  reg.A is reached ]
&HD19E  E601              AND   1
&HD1A0  CA9CD1            JP    Z,WINT1
&HD1A3  C9                RET
&HD1A4  3AE7D0    SETPAG: LD    A,(DELAY)       ;[ DELAY = Frames counter (between Page switching]
&HD1A7  3D                DEC   A               ;[ Time to change Page?]
&HD1A8  32E7D0            LD    (DELAY),A
&HD1AB  C0                RET   NZ              ;[ no? Return ]
&HD1AC  3AE8D0            LD    A,(DELBCK)      ;[ yes? Restore DELAY ]
&HD1AF  32E7D0            LD    (DELAY),A
&HD1B2  3AE6D0            LD    A,(PAG)         ;[ PAGE =  Displayed Page ]
&HD1B5  5F                LD    E,A             ;[ store it temporarly in E ]
&HD1B6  3C                INC   A               ;[ preset next page ]
&HD1B7  32E6D0            LD    (PAG),A         ;[ update PAGE ]
&HD1BA  FE04              CP    4               ;[ end of pages? (maximum 4 pages) ]
&HD1BC  7B                LD    A,E             ;[ No ,restore A ]
&HD1BD  C2C4D1            JP    NZ,STPG         ;[ and SETPAGE ]
&HD1C0  AF                XOR   A               ;[ Yes ,restart from ]
&HD1C1  32E6D0            LD    (PAG),A         ;[ update PAGE ]
&HD1C4  7B        STPG:   LD    A,E             ;[ SETPAGE routine for screen 5 ]
&HD1C5  87                ADD   A,A
&HD1C6  87                ADD   A,A
&HD1C7  87                ADD   A,A
&HD1C8  87                ADD   A,A
&HD1C9  87                ADD   A,A
&HD1CA  C61F              ADD   A,31
&HD1CC  D399              OUT   (&H99),A
&HD1CE  3E82              LD    A,2+128
&HD1D0  D399              OUT   (&H99),A
&HD1D2  C9                RET
&HD1D3  3AFFFF    RAMSEL: LD    A,(&HFFFF)      ;[ read secondary slot register ]
&HD1D6  2F                CPL                   ;[ complement ]
&HD1D7  32FDD1            LD    (SECSLT),A      ;[ store it to SECSLT ]
&HD1DA  E6FC              AND   &B11111100      ;[ cut bit 0 and bit 1 ]
&HD1DC  57                LD    D,A             ;[ save value to D ]
&HD1DD  E6C0              AND   &B11000000      ;[ cut from bit 2 to bit 5 ]
&HD1DF  CB07              RLC   A               ;[ move bit 6 and bit 7 to bit 0 and bit 1 ]
&HD1E1  CB07              RLC   A
&HD1E3  5F                LD    E,A
&HD1E4  7A                LD    A,D
&HD1E5  83                ADD   A,E
&HD1E6  32FFFF            LD    (&HFFFF),A
&HD1E9  DBA8              IN    A,(&HA8)
&HD1EB  32FED1            LD    (PRISLT),A
&HD1EE  E6FC              AND   &B11111100
&HD1F0  57                LD    D,A
&HD1F1  E6C0              AND   &B11000000
&HD1F3  CB07              RLC   A
&HD1F5  CB07              RLC   A
&HD1F7  5F                LD    E,A
&HD1F8  7A                LD    A,D
&HD1F9  83                ADD   A,E
&HD1FA  D3A8              OUT   (&HA8),A
&HD1FC  C9                RET
&HD1FD  00        SECSLT: DB    0
&HD1FE  00        PRISLT: DB    0
&HD1FF            
&HD1FF            
&HD1FF            
&HD1FF            
&HD1FF            
&HD1FF            
    0
&HD1FF            
&HD1FF            
&HD1FF            
&HD1FF            
&HD1FF            
&HD1FF               RLC   A
&HD1F7  5F                LD    E,A
&HD1F8  7A                LD    A,D
&HD1F9  83                ADD   A,E
&HD1FA  D3A8              OUT   (&HA8),A
&HD1FC  C9                RET
&HD1FD  00        SECSLT: DB    0
&HD1FE  00        PRISLT: DB    0
&HD1FF            

ro
msx guru
Posts: 2346
Postado em: 30 Setembro 2008, 09:06   
in WBASS just SAVE/A to save an ASCII version of the source

the listing posted above is a DISasm, not a source.
hint to monant: use the code tags to post code
 
Vai para pág. ( Página Anterior 1 | 2 )
 







(c) 1994 - 2008 Fundação MSX Resource Center. MSX é uma marca registrada da MSX Licensing Corporation.