4000 5e7d 7fff s ... COWBOY.S
00010 ANF:   JMP  BEGIN
00020 MANL:  DB   ' '
00030        DB   ' '
00040        DB   ''
00050        DB   '  '
00060        DB   '   '
00070 LSPA:  DB   0
00080 LZEI:  DB   25
00090 MANR:  DB   ' '
00100        DB   ' '
00110        DB   ''
00120        DB   '  '
00130        DB   '   '
00140 RSPA:  DB   28
00150 RZEI:  DB   25
00160 LTOT:  DB   '    '
00170        DB   '    '
00180        DB   '    '
00190        DB   ' '
00200        DB   ''
00210 RTOT:  DB   '    '
00220        DB   '    '
00230        DB   '    '
00240        DB   ' '
00250        DB   ''
00260 MGO:   DB   '    '
00270        DB   '    '
00280        DB   '    '
00290        DB   '    '
00300        DB   '    '
00310 HIND:  DB   ''
00320        DB   ''
00330        DB   ''
00340        DB   ''
00350        DB   ''
00360 BAUM:  DB   '  '
00370        DB   ''
00380        DB   ''
00390        DB   ''
00400        DB   '  '
00410 HANZ:  DB   0
00420 HSPA:  DB   14
00430 HZEI:  DB   0
00440 LSH:   DB   0
00450 LRT:   DB   0
00460 LSS:   DB   0
00470 LSZ:   DB   0
00480 LANZ:  DB   0
00490 RSH:   DB   0
00500 RRT:   DB   0
00510 RSS:   DB   0
00520 RSZ:   DB   0
00530 RANZ:  DB   0
00540 AUTM:  DB   0
00550        DB   0
00560 AUTS:  DB   0
00570 MGET:  CALL CPOS
00580        LD   C,5
00590 GLP2:  LD   B,4
00600 GLP:   LD   A,(DE)
00610        LD   (HL),A
00620        INC  HL
00630        INC  DE
00640        DJNZ GLP-#
00650        PUSH BC
00660        LD   BC,28
00670        ADD  HL,BC
00680        POP  BC
00690        DEC  C
00700        JRNZ GLP2-#
00710        RET  
00720 CPOS:  PUSH BC
00730        PUSH DE
00740        PUSH HL
00750        POP  BC
00760        PUSH AF
00770        LD   A,B
00780        CMP  32
00790        JRNC OUT-#
00800        LD   A,C
00810        CMP  32
00820        JRNC OUT-#
00830        LD   HL,0EBDFH
00840        LD   DE,32
00850        INC  B
00860        INC  C
00870 ADDZ:  ADD  HL,DE
00880        DJNZ ADDZ-#
00890        ADD  HL,BC
00900 CEND:  POP  AF
00910        POP  DE
00920        POP  BC
00930        RET  
00940 OUT:   LD   HL,0EBF0H
00950        JR   CEND-#
00960 INKEY: LD   A,(AUTS)
00970        OR   A
00980        JRNZ DEMO-#
00990        LD   A,B
01000        OR   A
01010        JRNZ JOYST-#
01020        CALL 0FFFAH
01030        RET  
01040 JOYST: CALL 0FFBBH
01050        RET  
01060 DEMO:  PUSH HL
01070        LD   HL,(AUTM)
01080        LD   A,(HL)
01090        INC  HL
01100        LD   (AUTM),HL
01110        LD   (AUTS),A
01120        POP  HL
01130        RET  
01140 LBEW:  LD   A,D
01150        DEC  A
01160        ADD  B
01170        LD   D,A
01180        CMP  28
01190        LD   A,0
01200        RC   
01210        PUSH HL
01220        POP  DE
01230        RET  
01240 LCOW:  LD   HL,(LSPA)
01250        LD   B,0
01260        CALL INKEY
01270        PUSH HL
01280        POP  DE
01290        CMP  'A'
01300        CAZ  LBEW
01310        LD   B,2
01320        CMP  'Z'
01330        CAZ  LBEW
01340        CMP  'X'
01350        CAZ  LSHOT
01360        DEC  B
01370        CMP  'S'
01380        CAZ  LSHOT
01390        DEC  B
01400        CMP  'W'
01410        CAZ  LSHOT
01420        LD   A,H
01430        CMP  D
01440        JRZ  LSW-#
01450        LD   (LSPA),DE
01460        LD   DE,MGO
01470        CALL MGET
01480        LD   HL,(LSPA)
01490        LD   DE,MANL
01500        CALL MGET
01510        JR   LSW-#
01520 LSHOT: LD   A,(LSH)
01530        OR   A
01540        RNZ  
01550        LD   A,(LANZ)
01560        OR   A
01570        RZ   
01580        DEC  A
01590        LD   (LANZ),A
01600        LD   A,B
01610        LD   (LRT),A
01620        LD   A,4
01630        LD   (LSS),A
01640        LD   (LSH),A
01650        LD   A,(LZEI)
01660        INC  A
01670        INC  A
01680        LD   (LSZ),A
01690        RET  
01700 LSW:   LD   A,(LSH)
01710        OR   A
01720        RZ   
01730        LD   HL,(LSS)
01740        CALL CPOS
01750        LD   (HL),32
01760        INC  HL
01770        LD   A,(HL)
01780        CMP  32
01790        JRNZ LNTR-#
01800        LD   A,(LSS)
01810        INC  A
01820        INC  A
01830        CMP  31
01840        JRNC LSTR-#
01850        LD   (LSS),A
01860        LD   A,(LSZ)
01870        DEC  A
01880        LD   B,A
01890        LD   A,(LRT)
01900        ADD  B
01910        LD   (LSZ),A
01920        LD   HL,(LSS)
01930        CALL CPOS
01940        LD   A,(HL)
01950        CMP  32
01960        JRNZ LNTR-#
01970        LD   (HL),0DAH
01980        RET  
01990 LNTR:  LD   (HL),32
02000        CMP  0DAH
02010        CAZ  RSTR
02020        LD   A,(LSS)
02030        CMP  27
02040        JRNC RMT-#
02050 LSTR:  XOR  A
02060        LD   (LSH),A
02070        RET  
02080 RSTR:  XOR  A
02090        LD   (RSH),A
02100        RET  
02110 RMT:   LD   HL,(RSPA)
02120        LD   DE,RTOT
02130        CALL MGET
02140 END:   LD   A,(AUTS)
02150        OR   A
02160        JPNZ BE2
02170        LD   HL,0ED07H
02180        LD   (0002BH),HL
02190        RST  020H
02200        DB   2
02210        DB   'NOCH EINMAL'
02220        DB   ' (J/N) ?'
02230        DB   089H
02240 FRAG:  RST  020H
02250        DB   1
02260        CMP  'J'
02270        JPZ  PENG
02280        CMP  'N'
02290        JRNZ FRAG-#
02300        RST  020H
02310        DB   2
02320        DB   08CH
02330        RST  038H
02340 PAUSE: LD   B,15
02350 PA3:   LD   C,0
02360 PA2:   DEC  C
02370        JRNZ PA2-#
02380        DJNZ PA3-#
02390        RET  
02400 RCOW:  LD   HL,(RSPA)
02410        LD   B,1
02420        CALL INKEY
02430        PUSH HL
02440        POP  DE
02450        LD   B,2
02460        CMP  01BH
02470        CAZ  LBEW
02480        CMP  01AH
02490        CAZ  RSHOT
02500        DEC  B
02510        CMP  01EH
02520        CAZ  RSHOT
02530        DEC  B
02540        CMP  016H
02550        CAZ  RSHOT
02560        CMP  017H
02570        CAZ  LBEW
02580        LD   A,H
02590        CMP  D
02600        JRZ  RSW-#
02610        LD   (RSPA),DE
02620        LD   DE,MGO
02630        CALL MGET
02640        LD   HL,(RSPA)
02650        LD   DE,MANR
02660        CALL MGET
02670        JR   RSW-#
02680 RSHOT: LD   A,(RSH)
02690        OR   A
02700        RNZ  
02710        LD   A,(RANZ)
02720        OR   A
02730        RZ   
02740        DEC  A
02750        LD   (RANZ),A
02760        LD   A,B
02770        LD   (RRT),A
02780        LD   A,27
02790        LD   (RSS),A
02800        LD   (RSH),A
02810        LD   A,(RZEI)
02820        INC  A
02830        INC  A
02840        LD   (RSZ),A
02850        RET  
02860 RSW:   LD   A,(RSH)
02870        OR   A
02880        RZ   
02890        LD   HL,(RSS)
02900        CALL CPOS
02910        LD   (HL),32
02920        DEC  HL
02930        LD   A,(HL)
02940        CMP  32
02950        JRNZ RNTR-#
02960        LD   A,(RSS)
02970        DEC  A
02980        DEC  A
02990        CMP  50
03000        JPNC RSTR
03010        LD   (RSS),A
03020        LD   A,(RSZ)
03030        DEC  A
03040        LD   B,A
03050        LD   A,(RRT)
03060        ADD  B
03070        LD   (RSZ),A
03080        LD   HL,(RSS)
03090        CALL CPOS
03100        LD   A,(HL)
03110        CMP  32
03120        JRNZ RNTR-#
03130        LD   (HL),0DAH
03140        RET  
03150 RNTR:  LD   (HL),32
03160        CMP  0DAH
03170        CAZ  LSTR
03180        LD   A,(RSS)
03190        CMP  4
03200        JPNC RSTR
03210 LMT:   LD   HL,(LSPA)
03220        LD   DE,LTOT
03230        CALL MGET
03240        JMP  END
03250 STEST: LD   A,(LANZ)
03260        OR   A
03270        RNZ  
03280        LD   A,(RANZ)
03290        OR   A
03300        RNZ  
03310        LD   A,(LSH)
03320        OR   A
03330        RNZ  
03340        LD   A,(RSH)
03350        OR   A
03360        RNZ  
03370        JMP  END
03380 HBEW:  LD   A,(HANZ)
03390        INC  A
03400        CMP  15
03410        LD   (HANZ),A
03420        RC   
03430        XOR  A
03440        LD   (HANZ),A
03450        LD   A,(AUTS)
03460        OR   A
03470        RNZ  
03480        LD   HL,(HSPA)
03490        LD   DE,MGO
03500        CALL MGET
03510        LD   A,(HZEI)
03520        INC  A
03530        CMP  28
03540        JRC  HGO-#
03550        XOR  A
03560 HGO:   LD   (HZEI),A
03570        LD   HL,(HSPA)
03580        LD   DE,HIND
03590        CALL MGET
03600        RET  
03610 AUTO:  DB   'SZZZZ'
03620        DB   'ZZZZZ'
03630        DB   'WA A '
03640        DB   'WA A '
03650        DB   'A A A A A '
03660        DB   'SZZZZ'
03670        DB   'AAASA'
03680        DB   'AAAZZ'
03690        DB   'ZSAAA'
03700        DB   '      '
03710        DB   0
03720 TEST:  XOR  A
03730        LD   (LSH),A
03740        LD   (RSH),A
03750        LD   (HZEI),A
03760        LD   A,255
03770        LD   (LANZ),A
03780        LD   (RANZ),A
03790        LD   A,20
03800        LD   (LZEI),A
03810        LD   (RZEI),A
03820        RST  020H
03830        DB   2
03840        DB   08CH
03850        LD   HL,(RSPA)
03860        LD   DE,MANR
03870        CALL MGET
03880        LD   HL,(LSPA)
03890        LD   DE,MANL
03900        CALL MGET
03910        RET  
03920 BAPOS: DB   8
03930        DB   1
03940        DB   5
03950        DB   8
03960        DB   7
03970        DB   15
03980        DB   9
03990        DB   25
04000        DB   21
04010        DB   2
04020        DB   23
04030        DB   8
04040        DB   22
04050        DB   17
04060        DB   20
04070        DB   24
04080 DRBA:  LD   DE,BAUM
04090        LD   B,8
04100        LD   HL,BAPOS
04110 NEBA:  PUSH HL
04120        PUSH DE
04130        PUSH BC
04140        LD   A,(HL)
04150        INC  HL
04160        LD   H,(HL)
04170        LD   L,A
04180        CALL MGET
04190        POP  BC
04200        POP  DE
04210        POP  HL
04220        INC  HL
04230        INC  HL
04240        DJNZ NEBA-#
04250        RET  
04260 FELD:  LD   H,0
04270 FELD2: LD   L,13
04280        PUSH HL
04290        CALL CPOS
04300        LD   (HL),''
04310        POP  HL
04320        PUSH HL
04330        LD   L,18
04340        LD   A,31
04350        SUB  H
04360        LD   H,A
04370        CALL CPOS
04380        LD   (HL),''
04390        LD   B,6
04400        CALL PA3
04410        POP  HL
04420        LD   A,H
04430        CMP  31
04440        RZ   
04450        INC  H
04460        JR   FELD2-#
04470 TE2:   LD   HL,AUTO
04480        LD   (AUTM),HL
04490        LD   A,1
04500        LD   (AUTS),A
04510 TE3:   CALL LCOW
04520        CALL RCOW
04530        CALL STEST
04540        CALL HBEW
04550        CALL PAUSE
04560        JR   TE3-#
04570 BEGIN: LD   SP,000B0H
04580        CALL TEST
04590        JR   TE2-#
04600 BE2:   LD   SP,000B0H
04610        XOR  A
04620        LD   (AUTS),A
04630        LD   HL,0EF98H
04640        LD   (0002BH),HL
04650        RST  020H
04660        DB   2
04670        DB   '>ENTER'
04680        DB   0BCH
04690        RST  020H
04700        DB   1
04710        CMP  3
04720        JPZ  00038H
04730        CMP  13
04740        JRNZ BEGIN-#
04750 PENG:  CALL TEST
04760        CALL FELD
04770        CALL DRBA
04780        JR   TE3-#
04790        JMP  ENDE