DEFINT A-Z
DECLARE SUB modex ()
DIM yy AS LONG

DIM a(10) AS LONG
a(0) = &H8BE58955
a(1) = &H33CD0C46
a(2) = &H890A768B
a(3) = &H8768B1C
a(4) = &H768B0C89
a(5) = &H5D148906
a(6) = &H8CA

DIM r AS STRING * 1, g AS STRING * 1, b AS STRING * 1
DIM s AS LONG

SCREEN 0
PRINT "Enter filename of 8bit bmp less then 512x495 in size"
LINE INPUT f$

modex

'OUT &H3D4, &H13
'OUT &H3D5, 64

DEF SEG = &HA000

'f$ = "city7.bmp"
k = 1
OPEN f$ FOR BINARY AS #1

  GET #1, 1, x
  GET #1, 29, y
  IF x <> &H4D42 AND y <> 8 THEN SYSTEM
  GET #1, 19, x
  GET #1, 23, y
  'GET #1, 35, size
  GET #1, 54, b
  OUT &H3C8, 0
  FOR i = 0 TO 255
    GET #1, , b
    GET #1, , g
    GET #1, , r
    OUT &H3C9, ASC(r) \ 4
    OUT &H3C9, ASC(g) \ 4
    OUT &H3C9, ASC(b) \ 4
    GET #1, , b
  NEXT
  IF x MOD 4 THEN z$ = SPACE$(4 - (x MOD 4))
  OUT &H3C4, &H2
  FOR i = 0 TO y - 1
    yy = (y - i - 1) * 80&
    FOR j = 0 TO x - 1
      GET #1, , b
      k = k * 2 MOD 15
      OUT &H3C5, k
      POKE j \ 4 + yy, ASC(b)
    NEXT
    GET #1, , z$
  NEXT
CLOSE

SYSTEM
x = 0
y = 0
DEF SEG = VARSEG(a(0))
CALL absolute(BYVAL 0, mb, mx, my, VARPTR(a(0)))
DO
CALL absolute(BYVAL 3, mb, mx, my, VARPTR(a(0)))
IF mb = 1 THEN
ox = mx + x
oy = my + y
DO
   CALL absolute(BYVAL 3, mb, mx, my, VARPTR(a(0)))
  
   x = ox - mx
   y = oy - my
  
   IF x < 1 THEN x = 0
   IF y < 1 THEN y = 0
   IF x > 384 THEN x = 384
   IF y > 250 THEN y = 250
  
   i = INP(&H3DA)
   OUT &H3C0, &H13
   OUT &H3C0, x MOD 8
  
   s = y * 128& + x \ 8
   OUT &H3D4, &HC
   OUT &H3D5, s \ 256
   OUT &H3D4, &HD
   OUT &H3D5, s
LOOP WHILE mb = 1
END IF
LOOP UNTIL INP(&H60) = 1

OUT &H3D4, &H13
OUT &H3D5, 40
SCREEN 0

SYSTEM

SUB modex
   SCREEN 13
   OUT &H3C4, &H4: OUT &H3C5, &H6: OUT &H3C4, &H0
   OUT &H3C5, &H1: OUT &H3C2, &HE3: OUT &H3C4, &H0
   OUT &H3C5, &H3: OUT &H3D4, &H11: x = INP(&H3D5) AND &H7F
   OUT &H3D5, x: OUT &H3D4, &H6: OUT &H3D5, &HD
   OUT &H3D4, &H7: OUT &H3D5, &H3E: OUT &H3D4, &H9
   OUT &H3D5, &H41: OUT &H3D4, &H10: OUT &H3D5, &HEA
   OUT &H3D4, &H11: OUT &H3D5, &HAC: OUT &H3D4, &H12
   OUT &H3D5, &HDF: OUT &H3D4, &H14: OUT &H3D5, &H0
   OUT &H3D4, &H15: OUT &H3D5, &HE7: OUT &H3D4, &H16
   OUT &H3D5, &H6: OUT &H3D4, &H17: OUT &H3D5, &HE3
END SUB


<div style="text-align:right;position:fixed;bottom:3px;right:3px;width:100%;z-index:999999;cursor:pointer;line-height:0;display:block;"><a target="_blank" href="https://www.freewebhostingarea.com" title="Free Web Hosting with PHP8"><img alt="Free Web Hosting" src="https://www.freewebhostingarea.com/images/poweredby.png" style="border-width: 0px;width: 180px; height: 45px; float: right;"></a></div>
