home *** CD-ROM | disk | FTP | other *** search
/ Die ASC Mega 2 / ASC-Mega2-CD-ROM.iso / SPIELE / KAISER / WR.ASM < prev    next >
Encoding:
Assembly Source File  |  1990-08-13  |  1.3 KB  |  106 lines

  1. ; WR.ASM
  2. ;
  3. ; procedure wr(y,x,att: byte; text: string);
  4. ; procedure wrm(y,x,att: byte; text: string);
  5. ; procedure wrr(y,x,att: byte; text: string);
  6.  
  7. public        wr
  8. public        wrm
  9. public        wrr
  10.  
  11. data        segment word public
  12.         assume ds:data
  13.  
  14.         extrn    crt_screen: dword
  15.  
  16. data        ends
  17.  
  18.  
  19. code        segment word public
  20.         assume cs:code
  21.  
  22. wr        proc far
  23.  
  24. lng        equ 6    ; BP + Rücksprung-AD
  25. text        equ ss:[bp+lng]
  26. att        equ byte ptr ss:[bp+lng+4]
  27. x        equ byte ptr ss:[bp+lng+6]
  28. y        equ byte ptr ss:[bp+lng+8]
  29. param_bytes    equ 10
  30.  
  31.     push    bp
  32.     mov    bp,sp
  33. do_wr:
  34.     push    ds
  35.     cld
  36.  
  37.     les    di,crt_screen
  38.         assume    es:nothing
  39.     mov     al,x
  40.     xor    ah,ah
  41.         shl     ax,1
  42.     add    di,ax
  43.     mov    al,y
  44.     mov    bx,160
  45.     mul    bx
  46.     add    di,ax        ; ES:DI zeigt auf Bildschirm
  47.  
  48.     lds    si,text
  49.     lodsb
  50.     mov    cl,al
  51.     xor    ch,ch
  52.     or    cx,cx
  53.     jz    do_nothing
  54.  
  55.     mov    ah,att
  56. copy_schleife:
  57.     lodsb
  58.     stosw
  59.     loop    copy_schleife
  60.  
  61. do_nothing:
  62.     pop    ds
  63.     pop    bp
  64.     ret    param_bytes
  65.  
  66. wr        endp
  67.  
  68.  
  69. wrm        proc far
  70.  
  71.     push    bp
  72.     mov    bp,sp
  73.         push    ds
  74.     cld
  75.  
  76.         lds     si,text
  77.         lodsb
  78.     shr    al,1
  79.     mov    bl,x
  80.     sub    bl,al
  81.     mov    x,bl
  82.     pop    ds
  83.     jmp    short do_wr
  84.  
  85. wrm        endp
  86.  
  87. wrr        proc far
  88.  
  89.     push    bp
  90.     mov    bp,sp
  91.     push    ds
  92.     cld
  93.  
  94.         lds     si,text
  95.     lodsb
  96.     mov    bl,x
  97.     sub    bl,al
  98.     inc    bl
  99.     mov    x,bl
  100.     pop    ds
  101.     jmp    short do_wr
  102.  
  103. wrr        endp
  104.  
  105. code        ends
  106.         end