5 REM welcome - calls elephant
10 DEFINT A-Z:KEY OFF:K=0:MN=0:Z=0
15 DEF SEG=&HB800
1100 GOSUB 60140
1200 SCREEN 1,0:COLOR 8,1:CLS
1201 EC=2:OC=2:X=20:Y=23:D$="WELCOME TO THE WORLD":GOSUB 60010
1202 X=125:Y=48:D$="OF THE":GOSUB 60010
1211 EC=3:OC=3:BC=4:X=24:Y=150:OS=128:D$="{}~  Personal Computer":GOSUB 60010
5000 REM this is RUNSHOW
5020 DIM FILE$(12):DIM FF(100)
5030 REM ***LOADING IN REQUIRED PICTURES***
5050 N=10
5060 FOR GRAB=1 TO N
5070 READ FILE$(GRAB)
5080 MEMDEL=GRAB*1024
5090 'memORY=8192-MEMDEL:REM 128K SYSTEM
5100 MEMORY=16384-MEMDEL:REM 256K SYSTEM
5110 GOSUB  6030 :REM LOAD FILE$(N) INTO LOCATION "MEMORY"
5120 NEXT
5130 RESTORE
5140 REM this is BASICMOV
5150 ' BASIC DEMO TO USE CALL FUNCTION
5160 '      USES AN ASSEMBLER SUBROUTINE TO MOVE
5170 '      UP TO 65535 BYTES IN MEMORY
5180 '******
5190 KEY OFF
5200 'DEFINE SEGMENT TO PLACE THE ASSEMBLER CODE
5210 DEF SEG=&H1200
5220 ' THIS TEST IF IT IS ALREADY LOADED, IF NOT IT LOADS IT
5230 BLOAD"mcode.%%%",0
5240 SUBRT = 0
5250 ' A% = THE FROM ADDRESS
5260 ' B% = THE TO ADDRESS
5270 ' C% = THE LENGTH TO MOVE
5280 GOSUB 5820:REM TURN ON COLOR SCREEN
5290 DISP=1:GOSUB 6290:REM DISPLAY "SELF"
5395 SCREEN 1,0:COLOR 1,0:K=0:MN=0:Z=0
5396 DEF SEG=&HB800
5400 OS=0:EC=2:OC=2:BC=3:X=90:Y=5:D$="GREETINGS!!":GOSUB 60010
5405 EC=2:OC=2:BC=1:X=30:Y=155:D$="I AM THE IBM PERSONAL":GOSUB 60010
5410 EC=2:OC=2:BC=1:X=30:Y=175:D$="       COMPUTER        ":GOSUB 60010
5415 'EC=2:OC=2:BC=1:X=30:Y=155:D$="                     ":GOSUB 60010
5417 FOR PAUSE=1 TO 2500:NEXT
5420 OS=0:EC=2:OC=2:BC=1:X=30:Y=5:D$=" I MADE THIS PICTURE     ":GOSUB 60010
5425 EC=2:OC=2:BC=1:X=30:Y=155:D$="   THAT YOU NOW SEE    ":GOSUB 60010
5430 EC=2:OC=2:BC=1:X=30:Y=175:D$="  WITH A TV CAMERA!!   ":GOSUB 60010
5432 FOR PAUSE=1 TO 2500:NEXT
5435 OS=0:EC=2:OC=2:BC=1:X=30:Y=5:D$=" LET ME SHOW YOU        ":GOSUB 60010
5436 EC=2:OC=2:BC=1:X=30:Y=155:D$=" SOME OF THE PICTURES ":GOSUB 60010
5437 EC=2:OC=2:BC=1:X=30:Y=175:D$="  THAT I HAVE TAKEN   ":GOSUB 60010
5438 FOR PAUSE=1 TO 2000:NEXT
5440 DISP=2:GOSUB 6290
5445 FOR PAUSE=1 TO 2500:NEXT
5450 DISP=3:GOSUB 6290
5455 FOR PAUSE=1 TO 2500:NEXT
5460 DISP=4:GOSUB 6290
5465 FOR PAUSE=1 TO 2500:NEXT
5470 DISP=5:GOSUB 6290
5475 FOR PAUSE=1 TO 2500:NEXT
5480 DISP=6:GOSUB 6290
5485 FOR N=1 TO 25
5490 DISP=5:GOSUB 6290
5495 DISP=6:GOSUB 6290
5500 FOR PAUSE=1 TO 5:NEXT
5505 NEXT
5510 FOR PAUSE=1 TO 1000:NEXT
5515 DISP=7:GOSUB 6290
5520 FOR PAUSE=1 TO 2500:NEXT
5525 DISP=8:GOSUB 6290
5530 FOR PAUSE=1 TO 2500:NEXT
5535 DISP=9:GOSUB 6290
5540 FOR PAUSE=1 TO 2500:NEXT
5545 DISP=10:GOSUB 6290
5548 FOR PAUSE=1 TO 2500:NEXT
5550 CLS
5560 OS=0:EC=2:OC=2:BC=3:X=30:Y=5:D$="I CAN ALSO DO.........":GOSUB 60010
5565 EC=2:OC=2:BC=1:X=50:Y=35:D$=" - THINGS FOR WORK":GOSUB 60010
5575 EC=2:OC=2:BC=1:X=50:Y=65:D$=" - PLAY GAMES":GOSUB 60010
5580 EC=2:OC=2:BC=1:X=50:Y=95:D$=" - ANIMATED ARTWORK":GOSUB 60010
5581 FOR PAUSE =1 TO 2000:NEXT
5582 COLOR 1,0
5583 CLS
5584 OS=0:EC=1:OC=1:BC=2:X=70:Y=80:D$="                     ":GOSUB 60010
5586 EC=1:OC=1:BC=2:X=70:Y=100:D$=" WATCH  ME!!!! ":GOSUB 60010
5587 EC=1:OC=1:BC=2:X=70:Y=120:D$="                     ":GOSUB 60010
5595 FOR PAUSE=1 TO 2500:NEXT
5800 RUN"pictdisp
5810 REM switch to color/graphics adapter
5820 DEF SEG=0
5830 POKE &H410,(PEEK(&H410) AND &HCF) OR &H20
5840 DEF SEG
5850 LOCATE ,,1,6,7
5860 SCREEN 0
5870 WIDTH 40
5880 RETURN
6030 RUN "elephant
6040 DEF SEG=MEMORY
6050 S$="d:"+FILE$(GRAB)
6060 BLOAD S$,0
6070 RETURN
6080 DATA SELF.pic,DAVIS.PIC,TK01.PIC,REDROOS.PIC,PEACOCK1.PIC,PEACOCKF.PIC,BLUEPALM.PIC,HAMMCOL.PIC,SWALLOW1.PIC,IBM.PIC
6280 GOSUB 5820:REM TURN ON COLOR SCREEN
6290 DEF SEG=&H1200
6300 KEY OFF:SCREEN 1:COLOR 1,0
6310 'FOR DISP=1 TO N
6320 MEMDEL=DISP*1024
6330 'MEMORY=8192-MEMDEL:REM 128K SYSTEM
6350 MEMORY=16384-MEMDEL:REM 256K SYSTEM
6360 A%=MEMORY
6370 B%=&HB800
6380 C%=&H4000
6390 CALL SUBRT (A%,B%,C%):RETURN:'NEXT
60000 'SAVE"GCS",A  'GRAPHICS CHARACTER SUBROUTINES
60010 'DISPLAY STRING
60020 FOR I=1 TO LEN(D$):A=ASC(MID$(D$,I,1))
60030 IF OS=128 THEN IF A<>32 THEN A=A+128
60040 'DISPLAY CHARACTER
60050 LX=X+W(A):IF LX>WID THEN X=0:Y=Y+SH:GOTO 60050
60060 LY=Y+H(A):IF LY>200 THEN Y=0:X=0:GOTO 60050
60070 IF (X AND 1)=0 THEN SWAP EC,OC
60080 IF BC<4 THEN LINE(X,Y)-(LX-1,LY-1),BC,BF
60090 K=POINT(X,Y):PSET(X,Y),K:FOR K=0 TO 2:IF CHAR$(A,K)<>"" THEN DRAW CHAR$(A,K)
60100 NEXT K:IF (X AND 1)=0 THEN SWAP EC,OC
60110 X=LX:IF X+SW>WID THEN X=0:Y=Y+SH:IF Y+SH>200 THEN Y=0
60120 NEXT I:RETURN
60130 '
60140 'INITIALIZATION
60145 'GOSUB 5000:REM LOAD IN VIDEO IMAGES OF SELF,.......
60150 A=0:X=0:Y=0:LX=0:LY=0:EC=3:OC=3:BC=4:D$="":K=0:WID=320
60160 DIM CHAR$(255,2),H(255),W(255)
60170 'GET CHARACTER SET
60180 OPEN "ELEPH.EXE" FOR INPUT AS #1
60190 INPUT #1,DEC,H,W,K:IF DEC=0 THEN 60220
60200 FOR I=0 TO K-1:INPUT #1,D$:IF H(DEC)<>99 THEN CHAR$(DEC,I)=D$
60210 NEXT I:H(DEC)=H:W(DEC)=W:GOTO 60190
60220 CLOSE #1:SH=H:SW=W:H(32)=SH:W(32)=SW:RETURN