8-Bit Software Online Conversion
                
             
        
        
    
:0.$.MIDEDIT - Listing
    
       10 REM "MIDIMEM-EDIT" Ch.W.Brederode,
 LISSE 1988, The Netherlands            
   15REM This is Public Domain          
   20 MODE6:HIMEM=&2800:DIM C%(15)      
   30 ONERROR GOTO 700                  
   40 PRINT'" MIDIMEM-EDIT"'" ==========
=="''                                   
   50 PRINT" You can draw 15 pictures fo
r MIDIMEM."'                            
   70 PRINT" Choose colours with 0123456
789ABCDEF"                              
   80 PRINT" Use the cursor-keys for edi
ting and"                               
   90 PRINT" press the spacebar."'      
  100 PRINT" Move the = below the pictur
es with"                                
  110 PRINT" the < or > (use SHIFT) to w
here you"                               
  120 PRINT" want it to be saved and AFT
ER that"                                
  130 PRINT" press CTRL/S. CTRL/L = read
 back for"                              
  140 PRINT" changes. STOP WITH ESCAPE."
'                                       
  150 PRINT" When ready with editing sav
e it by"                                
  160 PRINT" *SAVE MIDIKRT 2800 +800"'  
  170 PRINT" Press any key...";         
  180 Q=GET                             
  190 MODE2:HIMEM=&2800:Z%=HIMEM:*FX4,1 
  191 *LO. MIDIKRT                      
  192 PRINTTAB(11,3);                   
  193 FOR N%=1 TO 7:COLOUR N%:PRINTCHR$(
48+N%);:NEXT                            
  194 PRINTTAB(11,5)"BLACK=0"           
  200 C%=7:PRINTTAB(11,1)"colour";C%;   
  205 VDU23;8202;0;0;0;                 
  210 PL=0:I%=11:J%=17:PRINTTAB(I%,J%)"=
"                                       
  220 REM --- kleurentabel ---          
  230 FOR N%=0 TO 15:READ A%:C%(N%)=A%:N
EXT                                     
  240 DATA 0,1,4,5,16,17,20,21,64,65,68,
69,80,81,84,85                          
  250 REM --- tekenblokje en cursor --- 
  260 VDU23,240,15,15,15,15,15,15,15,15 
  265 VDU23,241,0,0,0,6,6,0,0,0         
  270 REM --- tekenveld ---             
  280 MOVE50,1000:DRAW586,1000:DRAW586,4
68:DRAW50,468:DRAW50,1000               
  290 P%=&3000+13*640+48:M%=&2800       
  300 REM --- display 15 figuren ---    
  310 PROCdisplay                       
  320 X%=32:Y%=988:PROCc                
  330 REM --- cursor ---                
  340 REPEAT PRINTTAB(17,1);C%;" ";     
  345 Q%=GET                            
  350 IF Q%=136 PROCc:X%=X%-32-32*(X%=32
) :PROCc:UNTILFALSE                     
  355 IF Q%=137 PROCc:X%=X%+32+32*(X%=51
2):PROCc:UNTILFALSE                     
  360 IF Q%=138 PROCc:Y%=Y%-32-32*(Y%=50
8):PROCc:UNTILFALSE                     
  370 IF Q%=139 PROCc:Y%=Y%+32+32*(Y%=98
8):PROCc:UNTILFALSE                     
  380 IF Q%=12 PROCdecodeer:X%=32:Y%=988
:PROCc:C%=7:UNTILFALSE                  
  390 IF Q%=19 PROCc:PROCcodeer:PROCwis:
X%=32:Y%=988:PROCc:C%=7:UNTILFALSE      
  400 IF Q%>47 AND Q%<58 C%=Q%-48:UNTILF
ALSE                                    
  410 IF Q%>64 AND Q%<71 C%=Q%-55:UNTILF
ALSE                                    
  420 IF Q%=60 OR Q%=62 PROCkies:UNTILFA
LSE                                     
  430 GCOL0,C%:VDU5,240,4:GCOL0,7:PROCc 
  440 UNTILFALSE                        
  450DEFPROCcodeer                      
  460 U%=64:V%=984:LOCAL F%,G%,S%,T%    
  470 FOR F%=0 TO 14 STEP2:FOR G%=0 TO 1
5                                       
  490 S%=U%+32*F%:T%=V%-32*G%           
  500 Q%=POINT(S%,T%):W%=C%(Q%)*2       
  505 Q%=POINT(S%+32,T%):W%=W%+C%(Q%)   
  510 ?Z%=W%:Z%=Z%+1:NEXT:NEXT          
  520 T%=PL:PROCshow                    
  530 Z%=&2800+PL*128:Q%=62:PROCkies    
  531 ENDPROC                           
  532DEFPROCdecodeer                    
  533 Z%=&2800+128*PL:VDU5              
  534 FOR B%=0 TO 14 STEP2:X%= 32+32*B% 
  535 FOR H%=0 TO 15:Y%=988-32*H%       
  536 E%=?Z%                            
  537 C%=(E%AND128)/16+(E%AND32)/8+(E%AN
D8)/4+(E%AND2)/2                        
  538 GCOL0,C%:MOVEX%,Y%:VDU240         
  539 E%=?Z%:C%=(E%AND64)/8+(E%AND16)/4+
(E%AND4)/2+(E%AND1)                     
  540 GCOL0,C%:MOVEX%+32,Y%:VDU240      
  542 Z%=Z%+1:NEXT:NEXT                 
  544 Z%=&2800+128*PL:VDU4              
  549 ENDPROC                           
  550DEFPROCdisplay                     
  551 FOR T%=0 TO 14:PROCshow:NEXT:PL=0 
  552 ENDPROC                           
  559DEFPROCshow                        
  560 U%=(T%+3)MOD6:V%=(T%+3)DIV6:L%=M%+
T%*128                                  
  570 SOUND1,-1,100,1                   
  571 Q%=P%+96*U%+3840*V%               
  572 FOR B%=0 TO 7:W%=Q%+B%*8          
  573 FOR H%=0 TO 3:E%=W%+H%*640        
  574 E%?0=L%?0:E%?1=L%?0:E%?2=L%?1:E%?3
=L%?1                                   
  575 E%?4=L%?2:E%?5=L%?2:E%?6=L%?3:E%?7
=L%?3                                   
  576 L%=L%+4:NEXT:NEXT                 
  590 ENDPROC                           
  600DEFPROCwis                         
  610 FOR M=1 TO 16:PRINTTAB(1,M)"      
  ":NEXT                                
  620 ENDPROC                           
  630DEFPROCkies                        
  640 PRINTTAB(I%,J%)" "                
  650 IF Q%=62 AND PL<14 PL=PL+1:Z%=Z%+1
28                                      
  660 IF Q%=60 AND PL>0  PL=PL-1:Z%=Z%-1
28                                      
  670 I%=2+((PL+3)MOD6)*3:J%=17+6*((PL+3
)DIV6)                                  
  680 PRINTTAB(I%,J%)"="                
  690 ENDPROC                           
  691DEFPROCc:GCOL3,7:MOVEX%,Y%:VDU5,241
,8,4:GCOL0,7                            
  692 ENDPROC                           
  700 *FX4