GophHub - zajo/appler/src/DATA.ASM


Raw File

;  _____________________________________________
; |                                             |
; |  Project:   APPLER                          |
; |  File:      DATA.ASM                        |
; |  Compiler:  16-bit TASM (2.5)               |
; |                                             |
; |  Subject:   Global Data                     |
; |                                             |
; |  Author:    Alexander Patalenski            |
; |_____________________________________________|

                include GLOBALS.INC
                include INTERFAC.INC

Startup         segment
		assume  CS:Startup,DS:Data,ES:Data,SS:Data

InitData        Proc    near
                push    ss
                pop     ds
                push    ss
                pop     es
		cld
                call    InitTEXTadr
                call    InitHGRadr
                call    InitHGRcol_mask
                call    InitHgrTextAdr
                call    InitHGRchars
		ret
InitData	Endp


NotShownAdr     =       8000h-4

InitTEXTadr     Proc    near
                mov     di,offset TEXTadr
                xor     ax,ax

                mov     dh,8
InitTEXTadr1:   mov     dl,3
InitTEXTadr2:   mov     cx,40
InitTEXTadr3:   stosw
		add     ax,2
                loop    InitTEXTadr3

                add     ax,-40*2 + 8*40*2
                dec     dl
                jnz     InitTEXTadr2

                Save    ax
                mov     ax,NotShownAdr
                mov     cx,8
        rep     stosw
                Restore ax
                add     ax,-3*8*40*2 + 40*2
                dec     dh
                jnz     InitTEXTadr1

		ret
InitTEXTadr     Endp


InitHGRadr      Proc    near
                mov     di,offset HGRadr
                mov     ax,5

		mov     bl,8
InitHGRadr1:    mov     dh,8
InitHGRadr2:    mov     dl,3
InitHGRadr3:    mov     cx,10
InitHGRadr4:    stosw
                inc     ax
	      	stosw
		add     ax,2
	      	stosw
		add     ax,2
	      	stosw
		add     ax,2
                loop    InitHGRadr4

                add     ax,-35*2 + 8*8*40*2
                dec     dl
                jnz     InitHGRadr3

                Save    ax
                mov     ax,NotShownAdr
                mov     cx,8
        rep     stosw
                Restore ax
                add     ax,-3*8*8*40*2 + 8*40*2
                dec     dh
                jnz     InitHGRadr2

                add     ax,-8*8*40*2 + 40*2
                dec     bl
                jnz     InitHGRadr1

		ret
InitHGRadr      Endp


InitHGRmasks    dw      0000000000000011b
                dw      1000000000000001b
		dw	1111110000000000b
                dw      1111111000000000b
		dw	1111000000000000b
                dw      1111100000000000b
		dw	1100000000000000b
                dw      1110000000000000b

InitHGRcol_mask Proc    near
                mov     di,offset HGRcolors
		mov     ax,0000000000000000b
InitHGRc_m1:    mov     dx,1100000000000000b
                stosw
InitHGRc_m2:    xor     ax,dx
                test    ax,dx
                jnz     InitHGRc_m1
                shr     dx,2
		test    dx,0000000000000011b
                jz      InitHGRc_m2

                mov     si,offset HGRcolors
		mov     cx,80h
InitHGRc_m3:    lodsw
                shr     ax,1
                stosw
		loop    InitHGRc_m3

                mov     si,offset HGRcolors
                mov     cx,2*80h
InitHGRc_m4:    lodsw
                rol     ax,2
		xchg    al,ah
                stosw
		loop    InitHGRc_m4

                mov     cx,2*2*80h
InitHGRc_m5:    lodsw
                rol     ax,2
                stosw
                loop    InitHGRc_m5

		mov     si,offset InitHGRmasks
                mov     di,offset HGRmasks
		mov     bl,8
InitHGRc_m6:    lods    InitHGRmasks
                mov     cx,80h
	rep     stosw
                dec     bl
		jnz     InitHGRc_m6

                ret
InitHGRcol_mask Endp


InitHgrTextAdr  Proc    near
                mov     di,offset HgrTextAdr
                mov     ax,4*8*40*2

                mov     dh,4
InitH_Tadr1:    mov     dl,3
InitH_Tadr2:    mov     cx,40
InitH_Tadr3:    stosw
		add     ax,2
                loop    InitH_Tadr3

                add     ax,-40*2 + 8*8*40*2
                dec     dl
                jnz     InitH_Tadr2

                Save    ax
                mov     ax,NotShownAdr
                mov     cx,8
        rep     stosw
                Restore ax
                add     ax,-3*8*8*40*2 + 8*40*2
                dec     dh
                jnz     InitH_Tadr1

                ret
InitHgrTextAdr  Endp


InitHGRchars    Proc    near
                mov     ax,1130h
                mov     bh,3
                int     10h
                xor     bx,bx
InitHGRchars10: mov     ax,bx
                ror     ah,1
                cwd
                not     dx
                mov     di,dx
                mov     si,TEXTchars[BX]
                and     si,0FFh
                mov     cl,3
                shl     si,cl
                add     si,bp
InitHGRchars20: lods    byte ptr ES:[SI]
                mov     cx,8
InitHGRchars30: shr     al,1
                rcr     dx,1
                sar     dx,1
                loop    InitHGRchars30
                xchg    dl,dh
                xor     dx,di
                mov     HGRchars[BX],dx
                add     bh,10b
                cmp     bh,8*10b
                jb      InitHGRchars20
                add     bx,-8*10b*100h+2
                cmp     bx,100h*2
                jb      InitHGRchars10
                ret
InitHGRchars    Endp

Startup         ends

;===============================================================================

Data            segment stack 'stack'

		even
TEXTadr         dw      400h dup(0)

HGRadr          dw      2000h dup(0)

HGRcolors       dw      4*100h dup(0)
HGRmasks        dw      4*100h dup(0)

HgrTextAdr      dw      4*80h dup(0)
HGRchars        dw      8*100h dup(0)


TEXTchars       dw      7040h,7041h,7042h,7043h,7044h,7045h,7046h,7047h ;
                dw      7048h,7049h,704Ah,704Bh,704Ch,704Dh,704Eh,704Fh ; I
                dw      7050h,7051h,7052h,7053h,7054h,7055h,7056h,7057h ; N
                dw      7058h,7059h,705Ah,705Bh,705Ch,705Dh,705Eh,705Fh ; V
                dw      7020h,7021h,7022h,7023h,7024h,7025h,7026h,7027h ; E
                dw      7028h,7029h,702Ah,702Bh,702Ch,702Dh,702Eh,702Fh ; R
                dw      7030h,7031h,7032h,7033h,7034h,7035h,7036h,7037h ; S
                dw      7038h,7039h,703Ah,703Bh,703Ch,703Dh,703Eh,703Fh ; E

                dw      0F040h,0F041h,0F042h,0F043h,0F044h,0F045h,0F046h,0F047h ;
                dw      0F048h,0F049h,0F04Ah,0F04Bh,0F04Ch,0F04Dh,0F04Eh,0F04Fh ;
                dw      0F050h,0F051h,0F052h,0F053h,0F054h,0F055h,0F056h,0F057h ; F
                dw      0F058h,0F059h,0F05Ah,0F05Bh,0F05Ch,0F05Dh,0F05Eh,0F05Fh ; L
                dw      0F020h,0F021h,0F022h,0F023h,0F024h,0F025h,0F026h,0F027h ; A
                dw      0F028h,0F029h,0F02Ah,0F02Bh,0F02Ch,0F02Dh,0F02Eh,0F02Fh ; S
                dw      0F030h,0F031h,0F032h,0F033h,0F034h,0F035h,0F036h,0F037h ; H
                dw      0F038h,0F039h,0F03Ah,0F03Bh,0F03Ch,0F03Dh,0F03Eh,0F03Fh ;

                dw      0740h,0741h,0742h,0743h,0744h,0745h,0746h,0747h ; C
                dw      0748h,0749h,074Ah,074Bh,074Ch,074Dh,074Eh,074Fh ; T
                dw      0750h,0751h,0752h,0753h,0754h,0755h,0756h,0757h ; R
                dw      0758h,0759h,075Ah,075Bh,075Ch,075Dh,075Eh,075Fh ; L

                dw      0720h,0721h,0722h,0723h,0724h,0725h,0726h,0727h ;
                dw      0728h,0729h,072Ah,072Bh,072Ch,072Dh,072Eh,072Fh ;
                dw      0730h,0731h,0732h,0733h,0734h,0735h,0736h,0737h ;
                dw      0738h,0739h,073Ah,073Bh,073Ch,073Dh,073Eh,073Fh ; N
                dw      0740h,0741h,0742h,0743h,0744h,0745h,0746h,0747h ; O
                dw      0748h,0749h,074Ah,074Bh,074Ch,074Dh,074Eh,074Fh ; R
                dw      0750h,0751h,0752h,0753h,0754h,0755h,0756h,0757h ; M
                dw      0758h,0759h,075Ah,075Bh,075Ch,075Dh,075Eh,075Fh ; A
                dw      0760h,0761h,0762h,0763h,0764h,0765h,0766h,0767h ; L
                dw      0768h,0769h,076Ah,076Bh,076Ch,076Dh,076Eh,076Fh ;
                dw      0770h,0771h,0772h,0773h,0774h,0775h,0776h,0777h ;
                dw      0778h,0779h,077Ah,077Bh,077Ch,077Dh,077Eh,07B1h ;


GRcolors        db      000h,004h,001h,005h,003h,007h,002h,009h
                db      006h,00Dh,008h,00Ch,00Ah,00Eh,00Bh,00Fh
                db      040h,044h,041h,045h,043h,047h,042h,049h
                db      046h,04Dh,048h,04Ch,04Ah,04Eh,04Bh,04Fh
                db      010h,014h,011h,015h,013h,017h,012h,019h
                db      016h,01Dh,018h,01Ch,01Ah,01Eh,01Bh,01Fh
                db      050h,054h,051h,055h,053h,057h,052h,059h
                db      056h,05Dh,058h,05Ch,05Ah,05Eh,05Bh,05Fh
                db      030h,034h,031h,035h,033h,037h,032h,039h
                db      036h,03Dh,038h,03Ch,03Ah,03Eh,03Bh,03Fh
                db      070h,074h,071h,075h,073h,077h,072h,079h
                db      076h,07Dh,078h,07Ch,07Ah,07Eh,07Bh,07Fh
                db      020h,024h,021h,025h,023h,027h,022h,029h
                db      026h,02Dh,028h,02Ch,02Ah,02Eh,02Bh,02Fh
                db      090h,094h,091h,095h,093h,097h,092h,099h
                db      096h,09Dh,098h,09Ch,09Ah,09Eh,09Bh,09Fh
                db      060h,064h,061h,065h,063h,067h,062h,069h
                db      066h,06Dh,068h,06Ch,06Ah,06Eh,06Bh,06Fh
                db      0D0h,0D4h,0D1h,0D5h,0D3h,0D7h,0D2h,0D9h
                db      0D6h,0DDh,0D8h,0DCh,0DAh,0DEh,0DBh,0DFh
                db      080h,084h,081h,085h,083h,087h,082h,089h
                db      086h,08Dh,088h,08Ch,08Ah,08Eh,08Bh,08Fh
                db      0C0h,0C4h,0C1h,0C5h,0C3h,0C7h,0C2h,0C9h
                db      0C6h,0CDh,0C8h,0CCh,0CAh,0CEh,0CBh,0CFh
                db      0A0h,0A4h,0A1h,0A5h,0A3h,0A7h,0A2h,0A9h
                db      0A6h,0ADh,0A8h,0ACh,0AAh,0AEh,0ABh,0AFh
                db      0E0h,0E4h,0E1h,0E5h,0E3h,0E7h,0E2h,0E9h
                db      0E6h,0EDh,0E8h,0ECh,0EAh,0EEh,0EBh,0EFh
                db      0B0h,0B4h,0B1h,0B5h,0B3h,0B7h,0B2h,0B9h
                db      0B6h,0BDh,0B8h,0BCh,0BAh,0BEh,0BBh,0BFh
                db      0F0h,0F4h,0F1h,0F5h,0F3h,0F7h,0F2h,0F9h
                db      0F6h,0FDh,0F8h,0FCh,0FAh,0FEh,0FBh,0FFh

                even
DACtable        db      00h,00h,00h,00h,00h,2Ah,00h,2Ah,00h,00h,2Ah,2Ah,2Ah,00h,00h,2Ah
                db      00h,2Ah,2Ah,2Ah,00h,2Ah,2Ah,2Ah,00h,00h,15h,00h,00h,3Fh,00h,2Ah
                db      15h,00h,2Ah,3Fh,2Ah,00h,15h,2Ah,00h,3Fh,2Ah,2Ah,15h,2Ah,2Ah,3Fh
                db      00h,15h,00h,00h,15h,2Ah,00h,3Fh,00h,00h,3Fh,2Ah,2Ah,15h,00h,2Ah
                db      15h,2Ah,2Ah,3Fh,00h,2Ah,3Fh,2Ah,00h,15h,15h,00h,15h,3Fh,00h,3Fh
                db      15h,00h,3Fh,3Fh,2Ah,15h,15h,2Ah,15h,3Fh,2Ah,3Fh,15h,2Ah,3Fh,3Fh
                db      15h,00h,00h,15h,00h,2Ah,15h,2Ah,00h,15h,2Ah,2Ah,3Fh,00h,00h,3Fh
                db      00h,2Ah,3Fh,2Ah,00h,3Fh,2Ah,2Ah,15h,00h,15h,15h,00h,3Fh,15h,2Ah
                db      15h,15h,2Ah,3Fh,3Fh,00h,15h,3Fh,00h,3Fh,3Fh,2Ah,15h,3Fh,2Ah,3Fh
                db      15h,15h,00h,15h,15h,2Ah,15h,3Fh,00h,15h,3Fh,2Ah,3Fh,15h,00h,3Fh
                db      15h,2Ah,3Fh,3Fh,00h,3Fh,3Fh,2Ah,15h,15h,15h,15h,15h,3Fh,15h,3Fh
                db      15h,15h,3Fh,3Fh,3Fh,15h,15h,3Fh,15h,3Fh,3Fh,3Fh,15h,3Fh,3Fh,3Fh

Data            ends

                END

Generated by GNU Enscript 1.6.6, and GophHub 1.3.