; *TORNADO *                                                    
; Worldbar dd. 15-11-2007

                                                                
           ORG  46000                                           
           DUMP 46000                                           
                                                                
scores     EQU  #F1E0                                           
barpos     EQU  barscore+1                                      
k1         EQU  #F000                                           
k2         EQU  #F100                                           
k2save     EQU  #F140                                           
                                                                
           LD   HL,k1             ; cards                       
           LD   B,31                                            
sc1        LD   C,4                                             
           LD   A,B                                             
           SUB  24                                              
           CP   C                                               
           JR   NC,sc2                                          
           LD   C,2                                             
           CP   C                                               
           JR   C,sc3                                           
sc2        LD   (HL),B                                          
           INC  HL                                              
           DEC  C                                               
           JR   NZ,sc2                                          
sc3        DJNZ sc1                                             
mainrst    LD   HL,udg                                          
           LD   DE,#F300                                        
           LD   (23675),DE                                      
decomp     LD   A,(HL)                                          
           INC  A                                               
           SUB  243                                             
           LD   B,1                                             
           JR   C,norm                                          
           LD   B,A                                             
           INC  HL                                              
norm       LD   A,(HL)                                          
           LD   (DE),A                                          
           INC  DE                                              
           DJNZ norm                                            
           INC  HL                                              
           LD   A,(HL)                                          
           CP   254                                             
           JR   NZ,decomp                                       
           CALL #DAF                                            
           LD   HL,afdruk                                       
scrpri     LD   A,16                                            
           RST  16                                              
           LD   A,(HL)                                          
           RST  16                                              
           INC  HL                                              
           LD   B,(HL)                                          
           CALL prmsg                                           
           INC  HL                                              
           LD   A,(HL)                                          
           INC  A                                               
           JR   NZ,scrpri                                       
           LD   HL,#F100                                        
           LD   DE,#F101                                        
           LD   (HL),L                                          
           LD   B,E                                             
           LD   C,D                                             
           LDIR                                                 
           LD   HL,#070B                                        
           LD   (barpos),HL                                     
           LD   A,99              ; f000 - f063 = 100           
           LD   (card+1),A                                      
           LD   HL,k2             ; player1                     
           LD   (playnow+1),HL                                  
           LD   C,2                                             
nxtplay    LD   B,5                                             
nxtcard    CALL card                                            
           LD   (HL),A                                          
           INC  HL                                              
           DJNZ nxtcard                                         
           LD   (HL),255                                        
           INC  HL                                              
           DEC  C                                               
           JR   NZ,nxtplay                                      
           LD   A,#30                                           
           LD   (23675),A                                       
nextplay   LD   HL,16384                                        
           LD   DE,49152                                        
           LD   BC,6912                                         
           LDIR                                                 
           LD   HL,k2                                           
           LD   DE,k2save                                       
           LD   C,12                                            
           LDIR                                                 
           LD   HL,#F200                                        
           LD   DE,#F400                                        
           INC  B                                               
           LDIR                                                 
           CALL reset                                           
           LD   HL,(playnow+1)                                  
playtest   LD   A,(HL)                                          
           LD   B,A                                             
           AND  254                                             
           ADD  A,A                                             
           JR   C,pt1                                           
           CP   52                                              
           JR   NZ,cardagain                                    
           INC  HL                                              
           JR   playtest                                        
                                                                
pt1        LD   HL,(playnow+1)                                  
pt2        PUSH HL                                              
           LD   B,4                                             
           LD   C,(HL)                                          
pt3        PUSH BC                                              
           LD   A,C                                             
           AND  1                                               
           OR   B                                               
           LD   B,A                                             
           CALL findtaf                                         
           LD   D,255                                           
           LD   HL,#F180                                        
cochair    INC  D                                               
           LD   A,D                                             
           AND  1                                               
           LD   E,A                                             
           PUSH HL                                              
           CALL attr                                            
           POP  HL                                              
           BIT  6,A                                             
           CALL Z,compsel                                       
           INC  HL                                              
           INC  HL                                              
           LD   A,(HL)                                          
           INC  A                                               
           JR   NZ,cochair                                      
           POP  BC                                              
joktab     INC  B                                               
           INC  B                                               
           LD   A,B                                             
           CP   24                                              
           JR   Z,joktab                                        
           CP   26                                              
           JR   Z,joktab                                        
           CP   32                                              
           JR   NZ,pt3                                          
           POP  HL                                              
           INC  HL                                              
           LD   A,(HL)                                          
           ADD  A,A                                             
           JR   NC,pt2                                          
           JP   endgame                                         
                                                                
compsel    PUSH HL                                              
           CALL reset                                           
           POP  HL                                              
           PUSH HL                                              
           CALL legalmove                                       
           LD   HL,#F1D0                                        
           LD   A,(HL)                                          
           INC  HL                                              
           OR   (HL)                                            
compend    POP  HL                                              
           RET  Z                                               
           CALL reset                                           
           POP  HL                                              
                                                                
cardagain  LD   HL,0                                            
           LD   (#F1D0),HL                                      
           LD   (#F1D2),HL                                      
           XOR  A                                               
           LD   (maxsc+1),A                                     
           LD   B,27                                            
           CALL prmsg                                           
           LD   DE,k2                                           
           CALL dispcard                                        
           LD   B,28                                            
           CALL prmsg                                           
           CALL dispcard                                        
           LD   HL,(playnow+1)                                  
           LD   DE,k2-1                                         
           SBC  HL,DE             ; always carry                
           JP   Z,playnow                                       
           CALL compmove                                        
           CALL jokplay                                         
           JP   sccheck                                         
                                                                
compmove   LD   HL,(playnow+1)                                  
c1nat      LD   A,(HL)                                          
           AND  254                                             
           CP   26                                              
           JR   Z,ncj                                           
           LD   B,(HL)                                          
           PUSH HL                                              
           PUSH HL                                              
           CALL reset                                           
           CALL findtaf                                         
           LD   HL,#F180                                        
           LD   DE,0                                            
c1natfn    PUSH HL                                              
           CALL reset                                           
           CALL attr                                            
           POP  HL                                              
           BIT  6,A                                             
           CALL Z,cp1                                           
           INC  D                                               
           LD   A,1                                             
           SUB  E                                               
           LD   E,A                                             
           INC  HL                                              
           INC  HL                                              
           LD   A,(HL)                                          
           INC  A                                               
           JR   NZ,c1natfn                                      
           POP  HL                                              
           POP  HL                                              
ncj        INC  HL                                              
           LD   A,(HL)                                          
           ADD  A,A                                             
           JR   NC,c1nat                                        
           RET                                                  
                                                                
jokplay    CALL reset                                           
           LD   HL,(playnow+1)                                  
j1nat      LD   A,(HL)                                          
           AND  254                                             
           CP   26                                              
           JR   NZ,nojp                                         
           LD   B,30                                            
jp1        LD   A,(HL)                                          
           LD   C,A                                             
           AND  1                                               
           OR   B                                               
           PUSH HL                                              
           PUSH BC                                              
           CALL reset                                           
           CALL findtaf                                         
           POP  BC                                              
           PUSH BC                                              
           LD   A,C                                             
           LD   (drawn+1),A                                     
           LD   HL,#F180                                        
           LD   DE,0                                            
jp1nat     PUSH HL                                              
           CALL reset                                           
           CALL attr                                            
           POP  HL                                              
           BIT  6,A                                             
           CALL Z,cp1                                           
           INC  D                                               
           LD   A,1                                             
           SUB  E                                               
           LD   E,A                                             
           INC  HL                                              
           INC  HL                                              
           LD   A,(HL)                                          
           INC  A                                               
           JR   NZ,jp1nat                                       
           POP  BC                                              
           POP  HL                                              
           DEC  B                                               
           LD   A,B                                             
           CP   27                                              
           JR   NZ,j1nj                                         
           LD   B,23                                            
j1nj       DEC  B                                               
           LD   A,B                                             
           CP   2                                               
           JR   NZ,jp1                                          
nojp       INC  HL                                              
           LD   A,(HL)                                          
           ADD  A,A                                             
           JR   NC,j1nat                                        
           RET                                                  
                                                                
sccheck    CALL reset                                           
           LD   A,(maxsc+1)                                     
           OR   A                                               
           JP   NZ,whier                                        
           LD   HL,(playnow+1)                                  
pf0        LD   C,(HL)                                          
           LD   A,C                                             
           AND  254                                             
           CP   26                                              
           JR   Z,pf2                                           
           PUSH HL                                              
pf1        INC  HL                                              
           LD   A,C                                             
           XOR  (HL)                                            
           DEC  A                                               
           JR   Z,pair                                          
           LD   A,(HL)                                          
           LD   A,(HL)                                          
           ADD  A,A                                             
           JR   NC,pf1                                          
           POP  HL                                              
pf2        INC  HL                                              
           LD   A,(HL)                                          
           ADD  A,A                                             
           JR   NC,pf0                                          
           JR   bar                                             
pair       LD   B,(HL)                                          
           CALL findtaf                                         
           LD   HL,#FFFF                                        
           LD   (#F190),HL                                      
           LD   HL,#F180          ; not on bar                  
           LD   DE,0                                            
plpair     PUSH HL                                              
           CALL reset                                           
           CALL attr                                            
           POP  HL                                              
           CPL                                                  
           BIT  6,A                                             
           CALL NZ,legalmove                                    
           JP   NZ,chsel                                        
           INC  D                                               
           LD   A,1                                             
           SUB  E                                               
           LD   E,A                                             
           INC  HL                                              
           INC  HL                                              
           LD   A,(HL)                                          
           INC  A                                               
           JR   NZ,plpair                                       
bar        LD   HL,(playnow+1)                                  
           LD   B,1                                             
bar2       LD   A,(HL)                                          
           AND  254                                             
           CP   26                                              
           JR   Z,nocnt                                         
           INC  B                                               
nocnt      INC  HL                                              
           LD   A,(HL)                                          
           ADD  A,A                                             
           JR   NC,bar2                                         
           DEC  B                                               
           JP   Z,endgame                                       
           LD   HL,(playnow+1)                                  
           DEC  HL                                              
nextbar    INC  HL                                              
           LD   A,(HL)                                          
           AND  254                                             
           CP   26                                              
           JR   Z,nextbar                                       
           LD   B,(HL)                                          
           LD   D,H                                             
           LD   E,L                                             
           CALL fend                                            
           DEC  HL                                              
           LD   A,(HL)                                          
           LD   (DE),A                                          
           LD   (HL),254                                        
           CALL findtaf                                         
setbar     LD   HL,#F190                                        
           LD   DE,2048                                         
           JP   chsel                                           
                                                                
whier      LD   HL,(playnow+1)                                  
           LD   A,(ccardplay)                                   
           LD   (drawn+1),A                                     
           DEC  HL                                              
cpend      INC  HL                                              
           LD   B,(HL)                                          
           CP   (HL)                                            
           JR   NZ,cpend                                        
           LD   D,H                                             
           LD   E,L                                             
           CALL fend                                            
           DEC  HL                                              
           LD   A,(HL)                                          
           LD   (DE),A                                          
           LD   (HL),254                                        
cardplay   LD   A,0                                             
           CALL findtaf2                                        
           LD   D,255                                           
           LD   HL,#F180-2                                      
cnext      INC  D                                               
           LD   A,D                                             
           AND  1                                               
           LD   E,A                                             
           INC  HL                                              
           INC  HL                                              
           PUSH HL                                              
           LD   B,(HL)                                          
           INC  HL                                              
           LD   C,(HL)                                          
tafpos     LD   HL,0                                            
           SBC  HL,BC                                           
           POP  HL                                              
           JR   NZ,cnext                                        
           JP   chsel                                           
                                                                
reset      LD   IX,#F1D0                                        
           PUSH HL                                              
           XOR  A                                               
           LD   (nrcard+1),A                                    
           LD   L,A                                             
           LD   H,A                                             
           LD   (#F1D0),HL                                      
           LD   (#F1D2),HL                                      
           DEC  HL                                              
           LD   (#F1C1),HL                                      
           LD   (#F1C5),HL                                      
           POP  HL                                              
           RET                                                  
                                                                
ccardplay  DEFB 0                                               
                                                                
cp1        CALL legalmove                                       
mtest      RET  Z                                               
           RET  C                                               
           EX   AF,AF'                                          
           LD   A,(IX-2)                                        
           ADD  A,(IX-1)                                        
           EXX                                                  
           LD   C,A                                             
maxsc      LD   A,0                                             
           CP   C                                               
           EXX                                                  
           JR   NC,nat1flg                                      
           EXX                                                  
           LD   A,C                                             
           EXX                                                  
           LD   (maxsc+1),A                                     
colplay    LD   A,0                                             
           LD   (cardplay+1),A                                  
           LD   A,(drawn+1)                                     
           LD   (ccardplay),A                                   
           PUSH DE                                              
           LD   D,(HL)                                          
           INC  HL                                              
           LD   E,(HL)                                          
           DEC  HL                                              
           LD   (tafpos+1),DE                                   
           POP  DE                                              
nat1flg    LD   A,0                                             
           OR   A                                               
           RET  Z                                               
           POP  BC                ; drop return                 
           POP  BC                ; drop bc/extra hl            
           POP  BC                ; drop cardpointer            
           EX   (SP),HL           ; drop return, push hl        
           CALL setend                                          
           POP  HL                                              
           EX   AF,AF'                                          
           JP   coselin                                         
                                                                
setend     LD   H,B                                             
           LD   L,C                                             
           CALL fend                                            
           DEC  HL                                              
           PUSH DE                                              
           LD   A,(BC)                                          
           LD   E,A                                             
           LD   A,(HL)                                          
           LD   (BC),A                                          
           LD   (HL),255                                        
           LD   A,E                                             
           POP  DE                                              
           LD   (drawn+1),A                                     
           RET                                                  
                                                                
playnow    LD   HL,0                                            
selcard    LD   A,L                                             
           SUB  6                                               
           PUSH AF                                              
           SBC  A,A                                             
           ADD  A,21                                            
           LD   B,A                                             
           POP  AF                                              
           JR   NC,pl2                                          
           LD   A,L                                             
pl2        LD   C,A                                             
           ADD  A,A                                             
           ADD  A,C                                             
           ADD  A,4                                             
           LD   C,A                                             
           CALL atbc                                            
           LD   B,32                                            
           CALL prmsg                                           
           CALL wkey                                            
;          CP   "q"                                             
;          JR   NZ,exkey                                        
;          RST  8                                               
;          DEFB 255                                             
exkey      CP   "a"                                             
           JP   Z,undomove                                      
           CP   " "                                             
           PUSH AF                                              
           LD   A,8                                             
           RST  16                                              
           LD   A," "                                           
           RST  16                                              
           POP  AF                                              
           JR   Z,select                                        
           INC  HL                                              
           LD   A,(HL)                                          
           ADD  A,A                                             
           JR   NC,selcard                                      
           JR   playnow                                         
select     LD   B,(HL)                                          
           LD   D,H                                             
           LD   E,L                                             
           CALL fend                                            
           DEC  HL                                              
           LD   A,(HL)                                          
           LD   (DE),A                                          
           LD   (HL),254                                        
           CALL findtaf                                         
flashloop  LD   DE,0                                            
           LD   HL,#F180                                        
ch2        PUSH HL                                              
           XOR  A                                               
           LD   (23560),A                                       
           POP  HL                                              
           PUSH HL                                              
           CALL attr                                            
           BIT  6,A                                             
           JR   Z,chemp                                         
           CP   #46                                             
           JR   NZ,used                                         
           LD   A,(nrcard+1)                                    
           AND  A                                               
           JR   NZ,used                                         
           LD   A,(drawn+1)                                     
           AND  254                                             
           CP   26                                              
           JR   NZ,chemp                                        
           INC  A                                               
           JR   used                                            
chemp      CALL flcur                                           
           LD   A,(23560)                                       
           OR   A                                               
           JR   Z,ch2+1                                         
           CP   " "                                             
used       POP  HL                                              
           JR   Z,chsel                                         
           LD   A,(23560)                                       
           CP   "a"                                             
           JP   Z,undomove                                      
           INC  HL                                              
           INC  HL                                              
           LD   A,(HL)                                          
           INC  A                                               
           JR   Z,flashloop                                     
           INC  D                                               
           LD   A,1                                             
           SUB  E                                               
           LD   E,A                                             
           JR   ch2                                             
chsel      CALL legalmove         ; hl holds AT   E = hor/ver   
           JP   Z,undomove                                      
coselin    PUSH AF                                              
           CALL prcard                                          
           POP  AF                                              
           JP   C,barscore                                      
           LD   HL,#F1C0                                        
           LD   C,(HL)                                          
           INC  HL                                              
ntabset    LD   A,(HL)                                          
           ADD  A,A                                             
           ADD  A,A                                             
           ADD  A,C                                             
           LD   E,A                                             
           LD   D,#F2                                           
           LD   A,(drawn+1)                                     
           LD   (DE),A                                          
           LD   A,C                                             
           XOR  2                                               
           LD   C,A                                             
           INC  HL                                              
           LD   A,(HL)                                          
           INC  A                                               
           JR   NZ,ntabset                                      
jokerwis   LD   A,0                                             
           AND  A                                               
           LD   A,0                                             
           LD   (jokerwis+1),A                                  
           JR   NZ,barback                                      
nrcard     LD   A,0                                             
           CPL                                                  
           LD   (nrcard+1),A                                    
           INC  A                                               
           LD   HL,#F1D1                                        
           JR   Z,sc1tst                                        
           INC  HL                                              
           LD   A,(HL)                                          
           INC  HL                                              
           OR   (HL)                                            
           JP   Z,undomove                                      
           LD   L,#D0                                           
           JR   card2-1                                         
sc1tst     LD   A,(HL)                                          
           DEC  HL                                              
           OR   (HL)                                            
           JP   Z,cardagain                                     
           LD   A,(HL)                                          
card2      LD   B,3                                             
           INC  HL                                              
           LD   E,(HL)                                          
           ADD  A,(HL)                                          
           DJNZ card2+2                                         
           JP   Z,undomove                                      
           EX   AF,AF'                                          
           XOR  A                                               
           LD   HL,(#F1D0)                                      
           OR   L                                               
           OR   H                                               
           JR   NZ,barback-1                                    
           LD   DE,#F1C1                                        
           CALL dttest                                          
           JR   Z,barback-1                                     
           INC  DE                                              
           CALL dttest                                          
           JP   NZ,undomove                                     
           EX   AF,AF'                                          
barback    LD   DE,#00E0                                        
           LD   HL,(playnow+1)                                  
           ADD  HL,DE                                           
           ADD  A,(HL)                                          
           LD   (HL),A                                          
           CALL scoredisp                                       
           LD   HL,(playnow+1)                                  
           DEC  HL                                              
           CALL fend                                            
fend3      LD   A,(HL)                                          
           INC  A                                               
           JR   Z,cready                                        
           CALL card                                            
           LD   (HL),A                                          
           INC  HL                                              
           JR   fend3                                           
cready     LD   HL,(playnow+1)                                  
           LD   A,(HL)                                          
           INC  A                                               
           JR   Z,endgame                                       
           LD   A,(playnow+1)                                   
           XOR  6                                               
           LD   (playnow+1),A                                   
           LD   A,(card)                                        
           CP   5                                               
           JR   C,endgame                                       
           LD   A,(barpos+1)                                    
           CP   12                                              
           JR   Z,endgame                                       
                                                                
           LD   DE,#F2C0                                        
           LD   B,96                                            
ncht       DEC  DE                                              
           INC  E                                               
           JP   Z,nextplay                                      
           DEC  E                                               
           LD   A,(DE)                                          
           OR   A                                               
           JR   NZ,nextck                                       
           INC  B                                               
nextck     DJNZ ncht                                            
                                                                
endgame    LD   DE,k2-1                                         
           LD   BC,516                                          
           LD   HL,scores                                       
end1       INC  DE                                              
           PUSH BC                                              
           LD   A,22                                            
           SUB  B                                               
           LD   B,A                                             
           CALL atbc                                            
           LD   B,3                                             
end5       LD   A,32                                            
           RST  16                                              
           INC  C                                               
           DJNZ end5                                            
           LD   A,C                                             
           POP  BC                                              
           LD   C,A                                             
           LD   A,(DE)                                          
           ADD  A,A                                             
           JR   C,end3                                          
           LD   A,(DE)                                          
           EX   DE,HL                                           
           LD   (HL),128                                        
           EX   DE,HL                                           
           AND  254                                             
           CP   26                                              
           LD   A,256-5                                         
           JR   NZ,end2                                         
           ADD  A,A                                             
end2       ADD  A,(HL)                                          
           LD   (HL),A                                          
           PUSH DE                                              
           PUSH HL                                              
           PUSH BC                                              
           LD   HL,scores                                       
           CALL scoredisp                                       
           CALL delay                                           
           CALL beep                                            
           POP  BC                                              
           POP  HL                                              
           POP  DE                                              
           JR   end1                                            
end3       LD   L,#E6                                           
           LD   E,5                                             
           LD   C,4                                             
           DJNZ end1                                            
end4       XOR  A                                               
           CALL #1601                                           
           LD   A,(scores)                                      
           LD   L,A                                             
           CP   160                                             
           SBC  A,A                                             
           LD   H,A                                             
           LD   A,(scores+6)                                    
           LD   E,A                                             
           CP   160                                             
           SBC  A,A                                             
           LD   D,A                                             
           AND  A                                               
           SBC  HL,DE                                           
           SBC  A,A                                             
           ADD  A,46                                            
           LD   B,A                                             
           CALL prmsg                                           
           LD   B,47                                            
           CALL prmsg                                           
           LD   A,2                                             
           CALL #1601                                           
           LD   B,43                                            
           CALL prmsg                                           
end6       CALL wkey                                            
           CP   45                                              
           JR   NZ,end6                                         
           JP   mainrst                                         
                                                                
scoredisp  LD   BC,#1416                                        
           LD   HL,#F1E0                                        
scpr1      PUSH BC                                              
           PUSH HL                                              
           CALL atbc                                            
           LD   B,31                                            
           CALL prmsg                                           
           POP  HL                                              
           LD   A,(HL)                                          
           CP   160                                             
           JR   C,possc                                         
           LD   A,"-"                                           
           RST  16                                              
           LD   A,(HL)                                          
           NEG                                                  
possc      CALL #2D28                                           
           CALL #2DE3                                           
           LD   A,32                                            
           RST  16                                              
           POP  BC                                              
           LD   HL,#F1E6                                        
           INC  B                                               
           LD   A,B                                             
           CP   22                                              
           JR   NZ,scpr1                                        
           RET                                                  
                                                                
                                                                
flcur      LD   B,E                                             
           INC  B                                               
           INC  B                                               
           LD   A,B                                             
           LD   (short2+1),A                                    
black      LD   A,(HL)                                          
           PUSH AF                                              
           XOR  A                                               
           LD   (HL),A                                          
           INC  HL                                              
           DJNZ black                                           
           OR   E                                               
           JR   Z,chshort                                       
           LD   C,32                                            
           ADD  HL,BC                                           
           LD   B,3                                             
black2     DEC  HL                                              
           LD   A,(HL)                                          
           PUSH AF                                              
           XOR  A                                               
           LD   (HL),A                                          
           DJNZ black2                                          
chshort    CALL delay                                           
           OR   E                                               
           JR   Z,short2                                        
           LD   B,3                                             
back2      POP  AF                                              
           LD   (HL),A                                          
           INC  HL                                              
           DJNZ back2                                           
           LD   C,32                                            
           SBC  HL,BC                                           
short2     LD   B,0                                             
back       DEC  HL                                              
           POP  AF                                              
           LD   (HL),A                                          
           DJNZ back                                            
           JP   delay                                           
                                                                
                                                                
curcomp    PUSH HL                                              
           LD   HL,(curcd+1)                                    
           LD   H,(HL)                                          
                                                                
           XOR  A                                               
           LD   E,A                                             
           LD   (23560),A                                       
           SUB  5                                               
curhor     ADD  A,5                                             
           CP   H                                               
           JR   C,curhor                                        
           JR   Z,curcd                                         
           INC  E                                               
curcd      LD   HL,0                                            
           LD   A,L                                             
           SUB  #90                                             
           JR   NZ,calcat                                       
           LD   E,A                                             
calcat     CALL attr                                            
           CALL flcur                                           
           LD   A,(23560)                                       
           OR   A                                               
           JR   Z,curcd                                         
           POP  HL                                              
           RET                                                  
                                                                
fend       INC  HL                                              
           LD   A,(HL)                                          
           ADD  A,A                                             
           JR   NC,fend                                         
           RET                                                  
                                                                
dttest     LD   HL,#F1C4                                        
           LD   A,(DE)                                          
           CP   H                                               
           RET  NC                                              
           CP   (HL)                                            
           RET  Z                                               
           INC  L                                               
           CP   (HL)                                            
           RET                                                  
                                                                
findtaf    LD   A,B                                             
           LD   (colplay+1),A                                   
           LD   (drawn+1),A                                     
findtaf2   AND  254                                             
           CP   26                                              
           CALL Z,selland                                       
           ADD  A,A                                             
           LD   C,A                                             
           LD   B,0                                             
           LD   HL,tabletab-9                                   
           ADD  HL,BC                                           
           LD   B,2                                             
nextable   CALL #2AEF                                           
           PUSH DE                                              
           DJNZ nextable                                        
           LD   DE,#F180                                        
           EXX                                                  
           LD   D,2                                             
nexttable  POP  BC                                              
           LD   E,4                                             
           LD   HL,disptable                                    
nextchair  LD   A,C                                             
           ADD  A,(HL)                                          
           INC  HL                                              
           EXX                                                  
           LD   (DE),A                                          
           INC  DE                                              
           EXX                                                  
           LD   A,B                                             
           ADD  A,(HL)                                          
           EXX                                                  
           LD   (DE),A                                          
           INC  DE                                              
           EXX                                                  
           DEC  E                                               
           JR   NZ,nextchair                                    
           DEC  D                                               
           JR   NZ,nexttable                                    
drawn      LD   A,0                                             
           RRA                                                  
           CP   13                                              
           JR   Z,nojoker                                       
           LD   A,(nrcard+1)                                    
           INC  A                                               
           JR   Z,nojoker                                       
           EXX                                                  
           LD   BC,(barpos)                                     
           LD   A,C                                             
           LD   (DE),A                                          
           INC  DE                                              
           LD   A,B                                             
           LD   (DE),A                                          
           INC  DE                                              
           EXX                                                  
nojoker    EXX                                                  
           LD   A,255                                           
           LD   (DE),A                                          
           INC  DE                                              
           LD   (DE),A                                          
           RET                                                  
                                                                
barscore   LD   BC,0                                            
           LD   D,B                                             
           LD   E,C                                             
           INC  E                                               
           INC  E                                               
           LD   A,E                                             
           CP   21                                              
           JR   NZ,barsave                                      
           LD   E,11                                            
           LD   A,D                                             
           CP   8                                               
           ADC  A,1                                             
           LD   D,A                                             
barsave    LD   (barpos),DE                                     
           LD   A,8                                             
           SUB  B                                               
           ADC  A,A                                             
           DEC  A                                               
           LD   B,A                                             
           LD   A,11                                            
           JR   C,barneg                                        
           LD   A,C                                             
           RRA                                                  
           LD   C,5                                             
barneg     SUB  C                                               
sum        ADD  A,B                                             
           JP   barback                                         
                                                                
                                                                
legalmove  PUSH HL                                              
           PUSH DE                                              
           LD   C,(HL)                                          
           INC  HL                                              
           LD   B,(HL)                                          
           XOR  A                                               
           LD   (nat1flg+1),A                                   
           LD   HL,(#F1C1)                                      
           LD   (#F1C4),HL                                      
           LD   HL,#FFFF                                        
           LD   (#F1C1),HL                                      
           LD   A,7                                             
           CP   D                                               
           JP   C,lma+1                                         
           LD   D,H                                             
           LD   E,D                                             
           LD   A,C                                             
           ADD  A,A                                             
           ADD  A,A                                             
lm1        INC  E                                               
           SUB  21                                              
           JR   NC,lm1                                          
           LD   A,29                                            
           CP   C                                               
           SBC  A,A                                             
           ADD  A,C                                             
lm2        INC  D                                               
           SUB  5                                               
           JR   NC,lm2                                          
           LD   A,17                                            
           CP   B                                               
           SBC  A,A                                             
           ADD  A,B                                             
lm3        INC  H                                               
           SUB  3                                               
           JR   NC,lm3                                          
           LD   A,H                                             
           ADD  A,A                                             
           ADD  A,H                                             
           ADD  A,A                                             
           LD   L,A                                             
           LD   A,E                                             
           LD   H,E                                             
           PUSH HL                                              
           CALL zettafnr-1                                      
           POP  HL                                              
           LD   A,D                                             
           PUSH HL                                              
           CALL zettafnr-1                                      
           POP  HL                                              
           LD   D,254                                           
           LD   A,B                                             
           OR   A                                               
           JR   NZ,lm4-1                                        
           LD   A,2                                             
           INC  A                                               
lm4        INC  D                                               
           SUB  3                                               
           JR   NC,lm4                                          
           LD   A,D                                             
           ADD  A,A                                             
           ADD  A,D                                             
           ADD  A,A                                             
           ADD  A,H                                             
           CALL zettafnr                                        
           POP  DE                                              
           LD   A,(#F1C2)                                       
           INC  A                                               
           LD   A,D                                             
           JR   Z,lm5                                           
           AND  1                                               
lm5        AND  3                                               
           PUSH DE                                              
           LD   HL,#F1C0                                        
           LD   (HL),A                                          
           INC  HL                                              
lm8        LD   A,(drawn+1)                                     
           EXX                                                  
           LD   D,0               ; 0 = 1 nat                   
           AND  254                                             
           LD   C,A               ; color to test               
           EXX                                                  
           LD   A,(drawn+1)                                     
           AND  1                                               
           LD   B,A                                             
           JR   NZ,lm88                                         
           DEC  B                                               
lm88       LD   C,1                                             
           LD   A,(HL)                                          
           ADD  A,A                                             
           ADD  A,A                                             
           LD   E,A                                             
           LD   D,#F2                                           
lm6        LD   A,(DE)                                          
           EXX                                                  
           AND  254                                             
           JR   Z,nat1            ; empty chair                 
           CP   26                                              
           JR   Z,nat1            ; joker on chair              
           LD   B,A               ; card from table             
           LD   A,C                                             
           CP   26                ; orig =joker                 
           JR   NZ,fnojok                                       
           LD   C,B               ; test with color             
fnojok     LD   A,B                                             
           CP   C                                               
           JR   Z,nat1                                          
           LD   D,C               ; not 1 nat, d<>0             
nat1       EXX                                                  
           LD   A,(DE)                                          
           OR   A                                               
           JR   Z,lm7+1                                         
           INC  C                 ; score                       
           AND  1                                               
           JR   Z,lm7                                           
           INC  B                                               
           INC  B                                               
lm7        DEC  B                                               
           INC  DE                                              
           LD   A,E                                             
           AND  3                                               
           JR   NZ,lm6                                          
           LD   A,B                                             
           INC  A                                               
           INC  A                                               
           AND  3                                               
           JR   Z,lm9                                           
           DEC  C                                               
           JR   Z,lmnosc                                        
           INC  C                                               
           EXX                                                  
           LD   A,D                                             
           OR   A                                               
           EXX                                                  
           JR   NZ,lmnosc                                       
           LD   A,C                                             
           CP   4                                               
           JR   NZ,lmnosc                                       
           PUSH HL                                              
           LD   HL,(playnow+1)                                  
           DEC  HL                                              
fendpl     INC  HL                                              
           LD   A,(HL)                                          
           INC  A                                               
           JR   NZ,fendpl                                       
           DEC  HL                                              
           LD   A,(HL)                                          
           CP   254                                             
           JR   NZ,nat1tr                                       
           LD   (HL),255          ; 1 card less                 
nat1tr     POP  HL                                              
           RLC  C                 ; double score                
           LD   A,C                                             
           LD   (nat1flg+1),A                                   
lmnosc     LD   (IX),C                                          
           INC  IX                                              
           INC  HL                                              
           LD   A,(HL)                                          
           CP   H                 ; h = #f2, (hl)= max 35 or 255
           JR   C,lm8             ; never zero-flag             
lm9        LD   IX,#F1D2                                        
           PUSH AF                                              
           LD   A,(nrcard+1)                                    
           INC  A                                               
           JR   Z,lma                                           
           LD   HL,(#F1C0)                                      
           LD   A,H                                             
           ADD  A,A                                             
           ADD  A,A                                             
           ADD  A,L                                             
           LD   L,A                                             
           LD   H,#F2                                           
           LD   A,(HL)                                          
           OR   A                                               
           JR   NZ,jokerexx                                     
lma        POP  AF                                              
           POP  DE                                              
           POP  HL                                              
           RET                                                  
                                                                
jokerexx   LD   A,(drawn+1)                                     
           XOR  (HL)                                            
           AND  1                 ; only 0 is ok                
           LD   A,(HL)                                          
           POP  DE                                              
           POP  DE                                              
           POP  HL                                              
           JP   NZ,undomove-1                                   
           EXX                                                  
           LD   C,A                                             
           LD   HL,(playnow+1)                                  
           DEC  HL                                              
           CALL fend                                            
           LD   (HL),C            ; set joker back              
           LD   (jokerwis+1),A                                  
           EXX                                                  
           CP   1                                               
           RET                                                  
                                                                
           ADD  A,L                                             
zettafnr   LD   E,A                                             
           LD   HL,illtable+1                                   
illtst     DEC  HL                                              
           CP   (HL)                                            
           RET  Z                                               
           JR   NC,illtst                                       
           LD   HL,#F1C0                                        
taflp      INC  HL                                              
           LD   A,(HL)                                          
           CP   E                                               
           RET  Z                                               
           INC  A                                               
           JR   NZ,taflp                                        
           LD   (HL),E                                          
           INC  HL                                              
           LD   (HL),255                                        
           RET                                                  
           DEFB 27,26,22,19,16,13,9                             
illtable   DEFB 8                                               
                                                                
atbc       LD   A,22                                            
           RST  16                                              
           LD   A,B                                             
           RST  16                                              
           LD   A,C                                             
           RST  16                                              
           RET                                                  
                                                                
prcard     LD   C,(HL)                                          
           LD   (curcd+1),HL                                    
           INC  HL                                              
           LD   B,(HL)                                          
           LD   A,E                                             
           RLCA                                                 
           RLCA                                                 
           LD   E,A                                             
           PUSH BC                                              
           CALL atbc                                            
           CALL setcolor                                        
           PUSH DE                                              
           LD   D,29                                            
           CALL primv                                           
           POP  DE                                              
           PUSH DE                                              
           LD   A,(drawn+1)                                     
           AND  1                                               
           ADD  A,37                                            
           CALL primv2                                          
           POP  DE                                              
           LD   A,E                                             
           OR   A                                               
           POP  BC                                              
           JR   Z,whotest                                       
           INC  B                                               
           CALL atbc                                            
           CALL setcolor                                        
           PUSH DE                                              
           LD   D,31                                            
           CALL primv                                           
           POP  DE                                              
           LD   A,(drawn+1)                                     
           AND  1                                               
           ADD  A,80                                            
           ADD  A,A                                             
           RST  16                                              
whotest    LD   A,(playnow+1)                                   
           CP   6                                               
           RET  NZ                                              
           CALL beep                                            
           JP   curcomp                                         
                                                                
beep       LD   HL,#76B                                         
           LD   DE,10                                           
           JP   #3B5                                            
                                                                
                                                                
primv      LD   A,(drawn+1)                                     
           AND  2                                               
           RRA                    ; open / close                
           ADD  A,D                                             
primv2     ADD  A,E               ; hor/vert                    
           LD   B,A                                             
           CALL prmsg                                           
           LD   B,39                                            
           JP   prmsg                                           
                                                                
setcolor   LD   A,16                                            
           RST  16                                              
           LD   A,(drawn+1)                                     
           RRA                                                  
           AND  A                                               
           RRA                                                  
           RST  16                                              
           LD   A,19                                            
           RST  16                                              
           LD   A,1                                             
           RST  16                                              
           RET                                                  
                                                                
delay      LD   B,8                                             
           HALT                                                 
           DJNZ delay+2                                         
           RET                                                  
                                                                
attr       LD   B,(HL)                                          
           INC  HL                                              
           LD   A,(HL)                                          
           RRCA                                                 
           RRCA                                                 
           RRCA                                                 
           LD   C,A                                             
           AND  #E0                                             
           XOR  B                                               
           LD   L,A                                             
           LD   A,C                                             
           AND  3                                               
           XOR  #58                                             
           LD   H,A                                             
           LD   A,(HL)                                          
           RET                                                  
                                                                
empty      INC  E                                               
           INC  HL                                              
           INC  HL                                              
           INC  HL                                              
           CP   15                                              
           JR   NZ,nland                                        
selland    LD   E,2                                             
           LD   HL,tabletab                                     
nland      LD   A,(HL)                                          
           OR   A                                               
           INC  HL                                              
           JR   Z,empty                                         
           LD   C,A                                             
           CALL setcurs                                         
           CALL wkey                                            
           PUSH AF                                              
           CALL setcurs                                         
           POP  AF                                              
           CP   "a"                                             
           JP   Z,undomove-1                                    
           CP   " "                                             
           LD   A,E                                             
           JR   NZ,empty                                        
           ADD  A,A                                             
           RET                                                  
                                                                
setcurs    LD   B,(HL)                                          
           CALL atbc                                            
           LD   A,21                                            
           RST  16                                              
           LD   A,1                                             
           RST  16                                              
           LD   A,16                                            
           RST  16                                              
           LD   A,E                                             
           RRA                                                  
           LD   B,4                                             
secu1      RST  16                                              
           LD   A,143                                           
           DJNZ secu1                                           
           RET                                                  
                                                                
wkey       XOR  A                                               
           PUSH HL                                              
           LD   HL,23560                                        
           LD   (HL),A                                          
wky        OR   (HL)                                            
           JR   Z,wky                                           
           OR   32                                              
           POP  HL                                              
           RET                                                  
                                                                
tabletab   DEFB 27,17,27,14       ;ind                          
           DEFB 2,2,2,5           ;afr                          
           DEFB 7,14,22,14        ;fra                          
           DEFB 7,2,12,2          ;ita                          
           DEFB 17,17,22,17       ;                             
           DEFB 27,5,27,2                                       
           DEFB 7,17,12,17                                      
           DEFB 17,2,22,2                                       
           DEFB 2,11,2,8                                        
           DEFB 27,11,27,8                                      
           DEFW 0,0,0,0                                         
           DEFB 7,5,22,5                                        
           DEFB 2,17,2,14                                       
                                                                
           POP  HL                                              
undomove   LD   HL,49152                                        
           LD   DE,16384                                        
           LD   BC,6912                                         
           LDIR                                                 
           LD   HL,k2save                                       
           LD   DE,k2                                           
           LD   C,12                                            
           LDIR                                                 
           LD   DE,#F200          ; oude tafel terug            
           LD   HL,#F400                                        
           INC  B                                               
           LDIR                                                 
           JP   nextplay                                        
                                                                
                                                                
dispcard   LD   A,(DE)                                          
           ADD  A,A                                             
           INC  DE                                              
           JR   Z,dc2                                           
           JR   C,dispcard                                      
           DEC  DE                                              
dc2        LD   A,32                                            
           RST  16                                              
           LD   A,16                                            
           RST  16                                              
           LD   A,(DE)                                          
           RRA                                                  
           AND  1                                               
           ADD  A,29                                            
           LD   B,A                                             
           LD   A,(DE)                                          
           RRA                                                  
           AND  A                                               
           RRA                                                  
           RST  16                                              
           CALL prmsg                                           
           LD   B,39                                            
           CALL prmsg                                           
           LD   A,(DE)                                          
           AND  1                                               
           ADD  A,37                                            
           LD   B,A                                             
           CALL prmsg                                           
           INC  DE                                              
           LD   A,(DE)                                          
           ADD  A,A                                             
           JR   NC,dc2                                          
           LD   B,40                                            
                                                                
prmsg      INC  B                                               
           PUSH AF                                              
           PUSH DE                                              
           LD   DE,test-1                                       
skipl      LD   A,(DE)                                          
           INC  DE                                              
           INC  A                                               
           JR   NZ,skipl                                        
           DJNZ skipl                                           
disp       LD   A,(DE)                                          
           RST  16                                              
           INC  DE                                              
           LD   A,(DE)                                          
           INC  A                                               
           JR   NZ,disp                                         
           POP  DE                                              
           POP  AF                                              
           RET                                                  
                                                                
card       LD   A,0                                             
           PUSH BC                                              
           PUSH HL                                              
           LD   C,A                                             
           DEC  A                                               
           LD   (card+1),A                                      
           LD   HL,(23672)        ; use time as seed            
           INC  HL                                              
           XOR  H                                               
           AND  #3F                                             
           LD   H,A                                             
           LD   (23672),HL        ; store in time!!!!!          
           LD   A,(HL)                                          
rnd        LD   L,A                                             
           SUB  C                                               
           JR   NC,rnd                                          
           LD   H,#F0                                           
           LD   B,H                                             
           LD   A,(BC)            ; fetch highest               
           LD   E,A               ; temp save                   
           LD   A,(HL)            ; fetch randomcard            
           LD   (HL),E            ; store highest               
           LD   (BC),A            ; 'delete' selected           
           POP  HL                                              
           POP  BC                                              
           RET                    ; a holds randomcard          
                                                                
afdruk     DEFB 0,0,1,12,2,12,2,12,4,12,4,12,3,12,0,17          
           DEFB 1,13,2,13,2,13,4,13,4,13,3,13,0,0               
           DEFB 1,0,1,1,2,2,2,2,4,3,4,3,3,4,3,0                 
           DEFB 0,0,1,12,2,12,2,12,4,12,4,12,3,12,0,17          
           DEFB 1,13,7,15,2,13,4,13,7,15,3,13,0,0               
           DEFB 1,0,1,1,7,18,7,5,7,17,0,6,0,0,7,17              
           DEFB 7,5,7,18,3,4,3,0                                
           DEFB 0,0,1,12,7,14,0,21,7,14,3,12,0,17               
           DEFB 5,15,7,16,7,21                                  
           DEFB 7,16,5,13,0,0                                   
           DEFB 5,6,7,11,0,17,5,7                               
           DEFB 0,0,5,14,0,14,7,22,7,23,7,24                    
           DEFB 0,14,5,12,0,17                                  
           DEFB 5,16,0,16,7,23,7,24,7,25                        
           DEFB 0,16,5,13,0,0                                   
           DEFB 5,6,0,17,0,17,7,24,7,25,7,26                    
           DEFB 0,17,0,17,5,7                                   
           DEFB 0,0,5,14,2,14,0,21,2,14,5,12,0,17               
           DEFB 7,13,2,16,0,21,2,16,1,15,0,0                    
           DEFB 7,0,7,19,2,18,2,8,2,17,0,6,0,0,2,17             
           DEFB 2,8,2,18,1,10                                   
           DEFB 0,0,7,12,2,14,4,14,3,14,2,14,1,14,0,17          
           DEFB 7,13,4,15,4,16,3,16,3,15,1,16,0,0               
           DEFB 7,0,7,19,4,18,4,9,4,17,4,9,4,18,3,18            
           DEFB 3,20,3,17,3,20,3,18,1,10                        
           DEFB 0,0,7,12,4,14,4,14,3,14,3,14,1,14,0,17          
           DEFB 7,13,4,16,4,16,3,16,3,16,1,16                   
                                                                
test       DEFB 255                                             
           DEFB 21,1,143,255      ; #  0                        
           DEFB 143,"A","F","R",143,255 ; 1                     
           DEFB 143,"I","T","A",143,255 ; 2                     
           DEFB 143,"C","H","N",143,255 ; 3                     
           DEFB 143,"E","S","P",143,255 ; 4                     
           DEFB "G","B","R",255   ; 5                           
           DEFB 159,160,"C","U","B",159,160,255 ; 6             
           DEFB 143,143,"U","S","R",143,143,255 ; 7             
           DEFB "F","R","A",255   ; #FRA#  8                    
           DEFB "G","E","R",255   ; #GER#  9                    
           DEFB 145,"I","N","D",159,160,255 ; #IND#  10         
           DEFB 32,32,32,32,20,1                                
           DEFM " WORLDBAR "                                    
           DEFB 20,0,32,32,255                                  
           DEFB 32,132,140,136,32,255 ; 12                      
           DEFB 32,129,131,130,32,255 ; 13                      
           DEFB 32,150,151,152,32,255 ; 14 ok                   
           DEFB 32,153,154,155,32,255 ; 15 ok                   
           DEFB 32,156,157,158,32,255 ; 16 ok                   
           DEFB 159,160,255       ; 17 ok                       
           DEFB 145,255           ; 18                          
           DEFB 143,"T","U","R",143,255 ; 19                    
           DEFB "U","S","A",255   ; 20                          
           DEFB 21,1,144,148,8,"1",144,148,8,"2",144,148,8,"3"  
           DEFB 144,148,8,"4",144,148,8,"5",21,0,255 ; 21       
           DEFB 146,149,8,"2",255 ; 22                          
           DEFB 146,149,8,"4",255 ; 23                          
           DEFB 146,149,8,"6"                                   
           DEFB 146,149,8,"8",147,149,8,"0",255 ; 24            
           DEFB 147,149,8,"2",255 ; 25                          
           DEFB 147,149,8,"4",255 ; 26                          
           DEFB 21,0,22,20,2,16,7,"A",":",255 ; 27              
           DEFB 21,0,22,21,2,16,7,"B",":",255 ; 28              
           DEFB 21,0,153,154,255  ; 29   ; hor open             
           DEFB 21,0,143,143,255  ; 30   ; hor dicht            
           DEFB 16,7,21,0,"s","c","o","r","e",":",255           
           DEFB 16,7,21,0,">",255                               
                                                                
           DEFB 21,0,144,145,146,255 ; ver open top             
           DEFB 21,0,132,140,136,255 ; ver close top            
                                                                
           DEFB 21,0,150,151,152,255 ; ver open bottom          
           DEFB 21,0,129,131,130,255 ; ver close bottom         
           DEFB 155,156,255       ; 37                          
           DEFB 157,158,255       ; 38                          
           DEFB 21,1,8,8,255                                    
           DEFB 16,0,32,32,32,255                               
           DEFB 159,255                                         
           DEFB 161,255                                         
           DEFB 22,13,11,16,7                                   
           DEFM "ENTER=PLAY"                                    
           DEFB 255,22,13,11,21,0                               
           DEFM "NEXT CARD?"                                    
           DEFB 16,0,255                                        
           DEFM "Computer"                                      
           DEFB 255                                             
           DEFM "Player"                                        
           DEFB 255                                             
           DEFM " wins!"                                        
                                                                
udg        DEFB 255,128,136,136,190,136,136,128 ;l              
           DEFB 255,248,129,255   ;m                            
           DEFB 245,128,190,245,128,255 ;n                      
           DEFB 128,134,138,130,186,130,143,255 ;o              
           DEFB 255,249,1         ;p                            
           DEFB 249,1,255         ;q                            
           DEFB 246,0,15,245,8    ;a                            
           DEFB 246,0,255,245,0   ;b                            
           DEFB 246,0,240,245,16  ;c                            
           DEFB 15,8,8,15,246,0   ;d                            
           DEFB 255,0,0,255,246,0 ;e                            
           DEFB 240,16,16,240,246,0 ;f                          
           DEFB 245,8,15,249,0    ;g                            
           DEFB 255,246,0         ;h                            
           DEFB 245,16,240,246,0  ;i                            
           DEFB 255,248,128,255   ;j                            
           DEFB 255,248,1,255     ;k                            
           DEFB 0,0,4,6,5,4,246,0                               
           DEFB 32,96,160,32,246,0                              
           DEFB 4,4,5,2,246,0,32,32,160,64                      
           DEFB 250,0,66,102                                    
           DEFB 90,66,248,0                                     
           DEFB 248,0,66,66                                     
           DEFB 90,36,248,0                                     
           DEFB 254                                             
                                                                
disptable  DEFB 3,0,254,0,1                                     
