;; JavaCPC disassembled binary ;; disassembled from #9DEE to #ADED ;; Tue Jul 01 19:16:59 CEST 2025 ;--------------------------------------------------------------- ; |SAY,@ - Converts a string af ASCII text to speech ; |ECHO, ; - Activates text to speech ; conversion on text printed to the screen. ; |APHONE,[,] ; - Send allophones directly to the interrupt driven allophone buffer. ; |ROOM,@ ; - Find out how many free locations in the allophones buffer. ; |QUIET ; - Clears the allophone buffer. ; |SPON ; - Activates the speech interrrupt event. ; |SPOFF ; - To prevent output of data from the allophone buffer. ; |SPSTATUS,@ ; - Read the status of the speech processor. ; |SPOUT,[,] ; - Sends allophones directly to the soundprocessor. ;---------------------------------------------------------------- ssa_port equ &FBEE ;---------------------------------------------------------------- ORG &9DEE-7 LD HL,&E9E1 ;; write POP HL, JP (HL) LD (&0030),HL ;; to &0030 RST &30 ;; and do it LD BC,rsx_list ;;9DEE: ... 01 F7 9D LD HL,rsx_workspace ;;9DF1: !.. 21 E9 A6 JP KL_LOG_EXT ;;9DF4: ... C3 D1 BC rsx_list dw name_table ;; &9E14 JP cmd_quiet ;;9DF9: .A. C3 41 9E JP cmd_aphone ;;9DFC: .d. C3 64 9E JP cmd_room ;;9DFF: ... C3 AB 9E JP cmd_spon ;;9E02: ... C3 C4 9E JP cmd_spoff ;;9E05: ... C3 DA 9E JP cmd_spstatus ;;9E08: ... C3 F8 9E JP cmd_spout ;;9E0B: .(. C3 28 9F JP cmd_echo ;;9E0E: ... C3 98 9F JP cmd_say ;;9E11: ... C3 80 9F name_table DB "QUIE","T" +&80 DB "APHON","E" +&80 DB "ROO","M" +&80 DB "SPO","N" +&80 DB "SPOF","F" +&80 DB "SPSTATU","S" +&80 DB "SPOU","T" +&80 DB "ECH","O" +&80 DB "SA","Y" +&80 db &00 ;--------------------------------------------------------------- cmd_quiet LD HL,cmd_spon_evnt_block1 ;;9E41: !.. 21 F0 A6 CALL KL_DISARM_EVENT ;;9E44: ... CD 0A BD EX DE,HL ;;9E47: . EB LD HL,ssa_status_word ;;9E48: !.. 21 EC A5 LD (HL),&00 ;;9E4B: 6. 36 00 INC HL ;;9E4D: # 23 LD (HL),&3F ;;9E4E: 6? 36 3F INC HL ;;9E50: # 23 LD (HL),&00 ;;9E51: 6. 36 00 LD BC,ssa_port ;;9E53: ... 01 EE FB cmd_quiet_rep1 IN A,(C) ;;9E56: .x ED 78 RLCA ;;9E58: . 07 JR NC,cmd_quiet_rep1 ;;9E59: 0. 30 FB XOR A ;;9E5B: . AF OUT (C),A ;;9E5C: .y ED 79 EX DE,HL ;;9E5E: . EB INC HL ;;9E5F: # 23 INC HL ;;9E60: # 23 LD (HL),&00 ;;9E61: 6. 36 00 RET ;;9E63: . C9 ;--------------------------------------------------------- cmd_aphone OR A ;;9E64: . B7 JR Z,bad_cmd_1 ;;9E65: ([ 28 5B PUSH IX ;;9E67: .. DD E5 POP HL ;;9E69: . E1 LD D,&00 ;;9E6A: .. 16 00 LD E,A ;;9E6C: _ 5F LD B,A ;;9E6D: G 47 DEC DE ;;9E6E: . 1B ADD HL,DE ;;9E6F: . 19 ADD HL,DE ;;9E70: . 19 cmd_aphone_rep1 LD A,(HL) ;;9E71: ~ 7E AND &3F ;;9E72: .? E6 3F PUSH HL ;;9E74: . E5 CALL cmd_aphone_2 ;;9E75: ... CD 7F 9E POP HL ;;9E78: . E1 RET NC ;;9E79: . D0 DEC HL ;;9E7A: + 2B DEC HL ;;9E7B: + 2B DJNZ cmd_aphone_rep1 ;;9E7C: .. 10 F3 RET ;;9E7E: . C9 cmd_aphone_2 PUSH AF ;;9E7F: . F5 LD HL,cmd_spon_evnt_block1 ;;9E80: !.. 21 F0 A6 CALL KL_DISARM_EVENT ;;9E83: ... CD 0A BD POP AF ;;9E86: . F1 PUSH HL ;;9E87: . E5 LD HL,ssa_status_word_2 ;;9E88: !.. 21 ED A5 OR A ;;9E8B: . B7 INC (HL) ;;9E8C: 4 34 DEC (HL) ;;9E8D: 5 35 JR Z,cmd_aphone_4 ;;9E8E: (. 28 15 DEC (HL) ;;9E90: 5 35 INC HL ;;9E91: # 23 LD D,A ;;9E92: W 57 LD A,(HL) ;;9E93: ~ 7E LD E,A ;;9E94: _ 5F INC A ;;9E95: < 3C CP &3F ;;9E96: .? FE 3F JR NZ,cmd_aphone_3 ;;9E98: . 20 01 XOR A ;;9E9A: . AF cmd_aphone_3 LD (HL),A ;;9E9B: w 77 LD A,D ;;9E9C: z 7A LD D,&00 ;;9E9D: .. 16 00 LD HL,data_A5EF ;;9E9F: !.. 21 EF A5 ADD HL,DE ;;9EA2: . 19 LD (HL),A ;;9EA3: w 77 SCF ;;9EA4: 7 37 cmd_aphone_4 POP HL ;;9EA5: . E1 INC HL ;;9EA6: # 23 INC HL ;;9EA7: # 23 LD (HL),&00 ;;9EA8: 6. 36 00 RET ;;9EAA: . C9 ;---------------------------------------------------------------------- cmd_room CP &01 ;;9EAB: .. FE 01 JR NZ,bad_cmd ;;9EAD: _ 20 5F LD HL,ssa_status_word_2 ;;9EAF: !.. 21 ED A5 LD A,(HL) ;;9EB2: ~ 7E DEC HL ;;9EB3: + 2B DEC HL ;;9EB4: + 2B OR (HL) ;;9EB5: . B6 LD BC,ssa_port ;;9EB6: ... 01 EE FB IN D,(C) ;;9EB9: .P ED 50 RLCA ;;9EBB: . 07 RLC D ;;9EBC: .. CB 02 CCF ;;9EBE: ? 3F RRA ;;9EBF: . 1F JR label_9F03 ;;9EC0: .A 18 41 bad_cmd_1 JR bad_cmd ;;9EC2: .J 18 4A ;----------------------------------------------------------------------- cmd_spon OR A ;;9EC4: . B7 JR NZ,bad_cmd ;;9EC5: G 20 47 enable_spon_ticker LD HL,ticker_status ;;9EC7: !.. 21 EB A5 BIT 6,(HL) ;;9ECA: .v CB 76 RET Z ;;9ECC: . C8 RES 6,(HL) ;;9ECD: .. CB B6 LD HL,cmd_spon_evnt_block ;;9ECF: !.. 21 EE A6 LD DE,cmd_spon_routine ;;9ED2: .[. 11 5B 9F LD B,&81 ;;9ED5: .. 06 81 JP KL_NEW_FAST_TICKER ;;9ED7: ... C3 E0 BC cmd_spoff OR A ;;9EDA: . B7 JR NZ,bad_cmd ;;9EDB: 1 20 31 LD HL,ticker_status ;;9EDD: !.. 21 EB A5 BIT 6,(HL) ;;9EE0: .v CB 76 RET NZ ;;9EE2: . C0 SET 6,(HL) ;;9EE3: .. CB F6 LD HL,cmd_spon_evnt_block ;;9EE5: !.. 21 EE A6 CALL KL_DEL_FAST_TICKER ;;9EE8: ... CD E6 BC LD BC,ssa_port ;;9EEB: ... 01 EE FB wait_rdy_spoff IN A,(C) ;;9EEE: .x ED 78 RLCA ;;9EF0: . 07 JR NC,wait_rdy_spoff ;;9EF1: 0. 30 FB LD A,&00 ;;9EF3: >. 3E 00 OUT (C),A ;;9EF5: .y ED 79 RET ;;9EF7: . C9 ;------------------------------------------------------------------ cmd_spstatus CP &01 ;;9EF8: .. FE 01 JR NZ,bad_cmd ;;9EFA: . 20 12 LD BC,ssa_port ;;9EFC: ... 01 EE FB IN A,(C) ;;9EFF: .x ED 78 AND &C0 ;;9F01: .. E6 C0 label_9F03 LD L,(IX+&00) ;;9F03: .n. DD 6E 00 LD H,(IX+&01) ;;9F06: .f. DD 66 01 LD (HL),A ;;9F09: w 77 INC HL ;;9F0A: # 23 LD (HL),&00 ;;9F0B: 6. 36 00 RET ;;9F0D: . C9 ;------------------------------------------------------------------ bad_cmd LD HL,txt_bad_cmd ;;9F0E: !.. 21 1A 9F print_txt LD A,(HL) ;;9F11: ~ 7E OR A ;;9F12: . B7 RET Z ;;9F13: . C8 CALL TXT_OUTPUT ;;9F14: .Z. CD 5A BB INC HL ;;9F17: # 23 JR print_txt ;;9F18: .. 18 F7 txt_bad_cmd DB "Bad Command",&0D,&0A,&00 ;----------------------------------------------------------- cmd_spout OR A ;;9F28: . B7 JR Z,bad_cmd ;;9F29: (. 28 E3 PUSH IX ;;9F2B: .. DD E5 POP HL ;;9F2D: . E1 LD B,&00 ;;9F2E: .. 06 00 LD C,A ;;9F30: O 4F LD E,A ;;9F31: _ 5F DEC BC ;;9F32: . 0B ADD HL,BC ;;9F33: . 09 ADD HL,BC ;;9F34: . 09 LD BC,ssa_port ;;9F35: ... 01 EE FB cmd_spout_rep LD A,(HL) ;;9F38: ~ 7E BIT 7,A ;;9F39: .. CB 7F JR NZ,cmd_spout_rep_3 ;;9F3B: . 20 0E BIT 6,A ;;9F3D: .w CB 77 JR NZ,cmd_spout_rep_2 ;;9F3F: . 20 02 JR cmd_spout_rep_5 ;;9F41: .. 18 10 cmd_spout_rep_2 IN D,(C) ;;9F43: .P ED 50 BIT 6,D ;;9F45: .r CB 72 JR NZ,cmd_spout_rep_2 ;;9F47: . 20 FA JR cmd_spout_rep_4 ;;9F49: .. 18 06 cmd_spout_rep_3 IN D,(C) ;;9F4B: .P ED 50 BIT 7,D ;;9F4D: .z CB 7A JR Z,cmd_spout_rep_3 ;;9F4F: (. 28 FA cmd_spout_rep_4 AND &3F ;;9F51: .? E6 3F cmd_spout_rep_5 OUT (C),A ;;9F53: .y ED 79 DEC HL ;;9F55: + 2B DEC HL ;;9F56: + 2B DEC E ;;9F57: . 1D JR NZ,cmd_spout_rep ;;9F58: . 20 DE RET ;;9F5A: . C9 ;---------------------------------------------------------------- cmd_spon_routine LD A,(ssa_status_word_2) ;;9F5B: :.. 3A ED A5 CP &3F ;;9F5E: .? FE 3F RET Z ;;9F60: . C8 LD BC,ssa_port ;;9F61: ... 01 EE FB IN A,(C) ;;9F64: .x ED 78 AND &40 ;;9F66: .@ E6 40 RET NZ ;;9F68: . C0 LD HL,ssa_status_word_2 ;;9F69: !.. 21 ED A5 INC (HL) ;;9F6C: 4 34 DEC HL ;;9F6D: + 2B LD A,(HL) ;;9F6E: ~ 7E LD E,A ;;9F6F: _ 5F INC A ;;9F70: < 3C CP &3F ;;9F71: .? FE 3F JR NZ,label_9F76 ;;9F73: . 20 01 XOR A ;;9F75: . AF label_9F76 LD (HL),A ;;9F76: w 77 LD D,&00 ;;9F77: .. 16 00 LD HL,data_A5EF ;;9F79: !.. 21 EF A5 ADD HL,DE ;;9F7C: . 19 OUTI ;;9F7D: .. ED A3 RET ;;9F7F: . C9 ;---------------------------------------------------------------------- cmd_say CP &01 ; is 1 paramter given cmd_say_1 JP NZ,bad_cmd ; if not go Bad Command LD L,(IX+&00) ; get addr of string and put it to HL LD H,(IX+&01) ; put lenght of sting to A LD A,(HL) ; OR A ; is string empty RET Z ; return to basic INC HL ; inc hl LD E,(HL) ; put real loctian of string to de INC HL ; LD D,(HL) ; EX DE,HL ; exhanhe de,hl for next step ; HL holds now the addr off string LD B,A ; store a as count to B ; B hold the length of string CALL cmd_say_rout1 ; go to chartest RET ; return to basic ;---------------------------------------------------------------- cmd_echo CP &01 ;;9F98: .. FE 01 JR NZ,cmd_say_1 ;;9F9A: . 20 E6 LD A,(IX+&01) ;;9F9C: .~. DD 7E 01 OR A ;;9F9F: . B7 JR NZ,cmd_say_1 ;;9FA0: . 20 E0 LD A,(IX+&00) ;;9FA2: .~. DD 7E 00 CP &05 ;;9FA5: .. FE 05 JR C,cmd_echo_epeat ;;9FA7: 8. 38 03 OR A ;;9FA9: . B7 JR cmd_say_1 ;;9FAA: .. 18 D6 cmd_echo_epeat LD HL,data_A696 ;;9FAC: !.. 21 96 A6 LD (HL),A ;;9FAF: w 77 INC HL ;;9FB0: # 23 LD (HL),&00 ;;9FB1: 6. 36 00 OR A ;;9FB3: . B7 JR Z,restore_ind_txt_out ;;9FB4: (. 28 0C ;patch the &BD9D IND_TXT_OUT_ACTION to JP &9FCF patch_ind_txt_out LD HL,IND_TXT_OUT_ACTION ;;9FB6: !.. 21 D9 BD LD (HL),&C3 ;;9FB9: 6. 36 C3 LD HL,new_ind_txt_out ;;9FBB: !.. 21 CF 9F LD (IND_TXT_OUT_ACTION +1),HL ;;9FBE: ".. 22 DA BD RET ;;9FC1: . C9 ;restore IND_TXT_OUT_ACTION restore_ind_txt_out LD DE,IND_TXT_OUT_ACTION ;;9FC2: ... 11 D9 BD LD HL,indtxtact_back ;;9FC5: !.. 21 E8 A5 ;copy 3 bytes LDI ;;9FC8: .. ED A0 LDI ;;9FCA: .. ED A0 LDI ;;9FCC: .. ED A0 RET ;;9FCE: . C9 ;------------------------------------------------------------- new_ind_txt_out LD HL,data_A696 ;;9FCF: !.. 21 96 A6 LD C,(HL) ;;9FD2: N 4E RES 7,C ;;9FD3: .. CB B9 RES 6,C ;;9FD5: .. CB B1 DEC C ;;9FD7: . 0D JR Z,new_ind_2 ;;9FD8: (. 28 10 DEC C ;;9FDA: . 0D JR Z,new_ind_8 ;;9FDB: (2 28 32 DEC C ;;9FDD: . 0D JR Z,new_ind_7 ;;9FDE: (( 28 28 BIT 7,(HL) ;;9FE0: .~ CB 7E JR NZ,new_ind_5 ;;9FE2: . 20 1B CP &60 ;;9FE4: .` FE 60 JR Z,new_ind_4 ;;9FE6: (. 28 12 JR new_ind_C ;;9FE8: .l 18 6C new_ind_2 BIT 7,(HL) ;;9FEA: .~ CB 7E JR NZ,new_ind_3 ;;9FEC: . 20 06 ; "`" CP &60 ;;9FEE: .` FE 60 JR Z,new_ind_4 ;;9FF0: (. 28 08 JR new_ind_C ;;9FF2: .b 18 62 new_ind_3 ; "'" CP &60 ;;9FF4: .` FE 60 JR Z,new_ind_6 ;;9FF6: (. 28 0B JR new_ind_7 ;;9FF8: .. 18 0E new_ind_4 SET 7,(HL) ;;9FFA: .. CB FE INC HL ;;9FFC: # 23 JR new_ind_B ;;9FFD: .E 18 45 new_ind_5 ; "'" CP &60 ;;9FFF: .` FE 60 JR NZ,new_ind_9 ;;A001: . 20 13 new_ind_6 RES 7,(HL) ;;A003: .. CB BE INC HL ;;A005: # 23 JR new_ind_B ;;A006: .< 18 3C new_ind_7 PUSH HL ;;A008: . E5 CALL new_ind_C ;;A009: .V. CD 56 A0 POP HL ;;A00C: . E1 JR new_ind_9 ;;A00D: .. 18 07 new_ind_8 PUSH HL ;;A00F: . E5 CP &20 ;;A010: . FE 20 CALL C,new_ind_C ;;A012: .V. DC 56 A0 POP HL ;;A015: . E1 new_ind_9 INC HL ;;A016: # 23 PUSH HL ;;A017: . E5 LD E,(HL) ;;A018: ^ 5E LD D,&00 ;;A019: .. 16 00 INC (HL) ;;A01B: 4 34 INC HL ;;A01C: # 23 ADD HL,DE ;;A01D: . 19 LD (HL),A ;;A01E: w 77 POP HL ;;A01F: . E1 ; check for space $ % * % 0 : A CP &20 ;;A020: . FE 20 JR Z,new_ind_A ;;A022: (. 28 1C CP &24 ;;A024: .$ FE 24 JR Z,new_ind_A ;;A026: (. 28 18 CP &25 ;;A028: .% FE 25 JR Z,new_ind_A ;;A02A: (. 28 14 CP &2A ;;A02C: .* FE 2A JR Z,new_ind_A ;;A02E: (. 28 10 CP &26 ;;A030: .& FE 26 JR Z,new_ind_A ;;A032: (. 28 0C CP &30 ;;A034: .0 FE 30 JR C,new_ind_B ;;A036: 8. 38 0C CP &3A ;;A038: .: FE 3A JR C,new_ind_A ;;A03A: 8. 38 04 CP &41 ;;A03C: .A FE 41 JR C,new_ind_B ;;A03E: 8. 38 04 new_ind_A LD A,&4E ;;A040: >N 3E 4E CP E ;;A042: . BB RET NZ ;;A043: . C0 new_ind_B LD B,(HL) ;;A044: F 46 XOR A ;;A045: . AF LD (HL),A ;;A046: w 77 CP B ;;A047: . B8 RET Z ;;A048: . C8 INC HL ;;A049: # 23 PUSH IY ;;A04A: .. FD E5 PUSH IX ;;A04C: .. DD E5 CALL cmd_say_rout1 ;;A04E: .a. CD 61 A0 POP IX ;;A051: .. DD E1 POP IY ;;A053: .. FD E1 RET ;;A055: . C9 new_ind_C CALL restore_ind_txt_out ;;A056: ... CD C2 9F PUSH AF ;;A059: . F5 CALL IND_TXT_OUT_ACTION ;;A05A: ... CD D9 BD POP AF ;;A05D: . F1 JP patch_ind_txt_out ;;A05E: ... C3 B6 9F ;---------------------------------------------------------------------------------------- cmd_say_rout1 PUSH HL ; HL holds the string-addr we need it PUSH BC ; BC holds the lenght of string we need it CALL enable_spon_ticker ; go enable the fastticker for SSA1 POP BC ; get back the lenght of string POP HL ; get backt the string addr LD IY,data_A5E5 ; set IY to XOR A ; set a to 0 LD (IY+&49),A ; store it to IX+&49 LD (IY+&01),A ; store it to IX+&00 rep_say_cmd_rout1 LD A,(HL) ; get a char from string INC HL ; inc the string addr JR check_char_1 ; goto check_char_1 back_to_cmd_say_rout_1 DJNZ rep_say_cmd_rout1 ; repeat if lentgh is not zero CALL label_A2D9 ;;A079: ... CD D9 A2 CALL label_A2C4 ;;A07C: ... CD C4 A2 LD A,&00 ; set A to 0 CALL trans_to_aphone ;;A081: ... CD 98 A5 RET ; back to cmd_say check_char_1 ; &A085 ; "a" lower chars ; "{" CP &61 ; if char is from &61 - &7B JR C,upper_chars ; convert it to &41 - &5B ; else goto upper_chars CP &7B ; BSP &61 = %01100001 ; "a" JR NC,upper_chars ; AND &DF = %11011111 AND &DF ; is &41 = %01000001 ; "A" JR check_char_2 ; go check_char_2 upper_chars ; "A" - "[" check if char is in this range CP &41 ; if char is not between &41 - &5B JR C,not_alphas ; goto not_alphas CP &5B ; else continue @ check_chars_2 JR NC,not_alphas ; check_char_2 LD (IY+&02),&00 ;;A099: .6.. FD 36 02 00 LD C,A ;;A09D: O 4F LD A,(IY+&01) ;;A09E: .~. FD 7E 01 AND &C0 ;;A0A1: .. E6 C0 JR Z,check_char_4 ;;A0A3: (. 28 12 BIT 7,A ;;A0A5: .. CB 7F LD A,&2F ;;A0A7: >/ 3E 2F JR Z,check_char_3 ;;A0A9: (. 28 02 LD A,&30 ;;A0AB: >0 3E 30 check_char_3 CALL label_A2C4 ;;A0AD: ... CD C4 A2 CALL get_notalphas ;;A0B0: ... CD AB A2 LD (IY+&01),&00 ;;A0B3: .6.. FD 36 01 00 check_char_4 PUSH HL ;;A0B7: . E5 LD HL,data_A62E ;;A0B8: !.. 21 2E A6 LD E,(HL) ;;A0BB: ^ 5E LD D,&00 ;;A0BC: .. 16 00 INC (HL) ;;A0BE: 4 34 INC HL ;;A0BF: # 23 ADD HL,DE ;;A0C0: . 19 LD (HL),C ;;A0C1: q 71 POP HL ;;A0C2: . E1 LD A,&27 ;;A0C3: >' 3E 27 CP E ;;A0C5: . BB CALL Z,label_A2C4 ;;A0C6: ... CC C4 A2 check_char_5 JP back_to_cmd_say_rout_1 ;;A0C9: .w. C3 77 A0 not_alphas ; test on space cr lf and tab CALL label_A2C4 ; CP &20 ; if one of thoose chars JR Z,not_alphas_2 ; goto not_alphas_2 CP &0D ; &20 &0D &0A &0D &09 JR Z,not_alphas_2 ; CP &0A ; JR Z,not_alphas_2 ; CP &09 ; JR NZ,label_A111 ; else goto not_alphas_2 PUSH AF ;;A0DF: . F5 CALL label_A2D9 ;;A0E0: ... CD D9 A2 POP AF ;;A0E3: . F1 BIT 7,(IY+&02) ;;A0E4: ...~ FD CB 02 7E JR NZ,label_A0F5 ;;A0E8: . 20 0B CP &0D ;;A0EA: .. FE 0D LD A,&04 ;;A0EC: >. 3E 04 JR Z,label_A0F2 ;;A0EE: (. 28 02 LD A,&02 ;;A0F0: >. 3E 02 label_A0F2 CALL trans_to_aphone ;;A0F2: ... CD 98 A5 label_A0F5 LD A,(HL) ;;A0F5: ~ 7E INC HL ;;A0F6: # 23 DJNZ label_A0FE ;;A0F7: .. 10 05 LD (IY+&02),&FF ;;A0F9: .6.. FD 36 02 FF RET ;;A0FD: . C9 label_A0FE ; test on space cr,lf and tab CP &20 ;;A0FE: . FE 20 JR Z,label_A0F5 ;;A100: (. 28 F3 CP &0D ;;A102: .. FE 0D JR Z,label_A0F5 ;;A104: (. 28 EF CP &0A ;;A106: .. FE 0A JR Z,label_A0F5 ;;A108: (. 28 EB CP &09 ;;A10A: .. FE 09 JR Z,label_A0F5 ;;A10C: (. 28 E7 JP check_char_1 ;;A10E: ... C3 85 A0 label_A111 LD (IY+&02),&00 ;;A111: .6.. FD 36 02 00 CP &2E ;;A115: .. FE 2E JR NZ,label_A135 ;;A117: . 20 1C CALL label_A2D9 ;;A119: ... CD D9 A2 JR NZ,label_A128 ;;A11C: . 20 0A CALL label_A2F0 ;;A11E: ... CD F0 A2 JR NZ,label_A12E ;;A121: . 20 0B LD A,&2E ;;A123: >. 3E 2E CALL get_notalphas ;;A125: ... CD AB A2 label_A128 LD (IY+&00),&FF ;;A128: .6.. FD 36 00 FF label_A12C JR check_char_5 ;;A12C: .. 18 9B label_A12E LD A,&04 ;;A12E: >. 3E 04 CALL trans_to_aphone ;;A130: ... CD 98 A5 JR label_A12C ;;A133: .. 18 F7 label_A135 ; test on " : ; ' , ! ? " LD C,&01 ;;A135: .. 0E 01 CP &3A ;;A137: .: FE 3A JR Z,label_A153 ;;A139: (. 28 18 CP &3B ;;A13B: .; FE 3B JR Z,label_A153 ;;A13D: (. 28 14 DEC C ;;A13F: . 0D CP &27 ;;A140: .' FE 27 JR Z,label_A153 ;;A142: (. 28 0F LD C,&03 ;;A144: .. 0E 03 CP &2C ;;A146: ., FE 2C JR Z,label_A153 ;;A148: (. 28 09 INC C ;;A14A: . 0C CP &21 ;;A14B: .! FE 21 JR Z,label_A153 ;;A14D: (. 28 04 CP &3F ;;A14F: .? FE 3F JR NZ,label_A15C ;;A151: . 20 09 label_A153 LD A,C ;;A153: y 79 CALL trans_to_aphone ;;A154: ... CD 98 A5 CALL label_A2D9 ;;A157: ... CD D9 A2 label_A15A JR label_A12C ;;A15A: .. 18 D0 label_A15C CP &24 ;;A15C: .$ FE 24 JR NZ,label_A16F ;;A15E: . 20 0F CALL label_A2F0 ;;A160: ... CD F0 A2 JR Z,label_A169 ;;A163: (. 28 04 LD A,&30 ;;A165: >0 3E 30 JR label_A180 ;;A167: .. 18 17 label_A169 SET 7,(IY+&01) ;;A169: .... FD CB 01 FE JR label_A15A ;;A16D: .. 18 EB label_A16F CP &23 ;;A16F: .# FE 23 JR NZ,label_A185 ;;A171: . 20 12 CALL label_A2F0 ;;A173: ... CD F0 A2 JR NZ,label_A17E ;;A176: . 20 06 SET 6,(IY+&01) ;;A178: .... FD CB 01 F6 JR label_A15A ;;A17C: .. 18 DC label_A17E LD A,&2F ;;A17E: >/ 3E 2F label_A180 CALL get_notalphas ;;A180: ... CD AB A2 JR label_A15A ;;A183: .. 18 D5 label_A185 ;check for & % * / | @ ^ + - = > < \ PUSH HL ; pointer before Phonos - Table PUSH BC ;;A186: . C5 LD HL,char_table_a ; test if a is in table LD BC,&000D ; &0D bytes or 13 CPIR ;;A18D: .. ED B1 LD E,C ;;A18F: Y 59 POP BC ;;A190: . C1 POP HL ;;A191: . E1 JR NZ,label_A19F ;;A192: . 20 0B LD A,&1F ;;A194: >. 3E 1F ADD E ;;A196: . 83 CALL get_notalphas ;;A197: ... CD AB A2 CALL label_A2D9 ;;A19A: ... CD D9 A2 JR label_A15A ;;A19D: .. 18 BB label_A19F DEC HL ;;A19F: + 2B CALL label_A2F7 ;;A1A0: ... CD F7 A2 INC HL ;;A1A3: # 23 JR NZ,label_A15A ;;A1A4: . 20 B4 LD (IY+&49),&00 ;;A1A6: .6I. FD 36 49 00 LD C,A ;;A1AA: O 4F LD A,(IY+&00) ;;A1AB: .~. FD 7E 00 OR A ;;A1AE: . B7 LD A,C ;;A1AF: y 79 JR NZ,label_A1D3 ;;A1B0: ! 20 21 CP &30 ;;A1B2: .0 FE 30 JR NZ,label_A1D3 ;;A1B4: . 20 1D label_A1B6 LD A,(HL) ;;A1B6: ~ 7E INC HL ;;A1B7: # 23 DJNZ label_A1BF ;;A1B8: .. 10 05 XOR A ;;A1BA: . AF CALL get_notalphas ;;A1BB: ... CD AB A2 RET ;;A1BE: . C9 label_A1BF CP &30 ;;A1BF: .0 FE 30 JR Z,label_A1B6 ;;A1C1: (. 28 F3 DEC HL ;;A1C3: + 2B CALL label_A2F7 ;;A1C4: ... CD F7 A2 INC HL ;;A1C7: # 23 JR Z,label_A1D3 ;;A1C8: (. 28 09 PUSH AF ;;A1CA: . F5 XOR A ;;A1CB: . AF CALL get_notalphas ;;A1CC: ... CD AB A2 POP AF ;;A1CF: . F1 JP check_char_1 ;;A1D0: ... C3 85 A0 label_A1D3 PUSH HL ;;A1D3: . E5 LD HL,data_A62E ;;A1D4: !.. 21 2E A6 LD E,(HL) ;;A1D7: ^ 5E LD D,&00 ;;A1D8: .. 16 00 INC (HL) ;;A1DA: 4 34 INC HL ;;A1DB: # 23 ADD HL,DE ;;A1DC: . 19 LD (HL),A ;;A1DD: w 77 POP HL ;;A1DE: . E1 LD D,A ;;A1DF: W 57 LD A,&27 ;;A1E0: >' 3E 27 CP E ;;A1E2: . BB LD A,D ;;A1E3: z 7A JR Z,label_A1EF ;;A1E4: (. 28 09 CALL label_A2F0 ;;A1E6: ... CD F0 A2 JR NZ,label_A1EF ;;A1E9: . 20 04 LD A,(HL) ;;A1EB: ~ 7E INC HL ;;A1EC: # 23 DJNZ label_A1D3 ;;A1ED: .. 10 E4 label_A1EF PUSH HL ;;A1EF: . E5 PUSH BC ;;A1F0: . C5 LD HL,data_A62E ;;A1F1: !.. 21 2E A6 LD B,(HL) ;;A1F4: F 46 INC HL ;;A1F5: # 23 LD A,(IY+&00) ;;A1F6: .~. FD 7E 00 OR A ;;A1F9: . B7 LD (IY+&00),&00 ;;A1FA: .6.. FD 36 00 00 LD A,B ;;A1FE: x 78 JR NZ,label_A249 ;;A1FF: H 20 48 CP &0A ;;A201: .. FE 0A JR NC,label_A249 ;;A203: 0D 30 44 CP &07 ;;A205: .. FE 07 JR C,label_A215 ;;A207: 8. 38 0C SUB &06 ;;A209: .. D6 06 CALL label_A251 ;;A20B: .Q. CD 51 A2 LD A,&1C ;;A20E: >. 3E 1C CALL get_notalphas ;;A210: ... CD AB A2 LD A,&06 ;;A213: >. 3E 06 label_A215 CP &04 ;;A215: .. FE 04 JR C,label_A23A ;;A217: 8! 38 21 SUB &03 ;;A219: .. D6 03 LD B,A ;;A21B: G 47 PUSH HL ;;A21C: . E5 LD A,&30 ;;A21D: >0 3E 30 CP (HL) ;;A21F: . BE JR NZ,label_A22E ;;A220: . 20 0C INC HL ;;A222: # 23 CP (HL) ;;A223: . BE JR NZ,label_A22E ;;A224: . 20 08 INC HL ;;A226: # 23 CP (HL) ;;A227: . BE JR NZ,label_A22E ;;A228: . 20 04 INC HL ;;A22A: # 23 POP AF ;;A22B: . F1 JR label_A238 ;;A22C: .. 18 0A label_A22E POP HL ;;A22E: . E1 LD A,B ;;A22F: x 78 CALL label_A251 ;;A230: .Q. CD 51 A2 LD A,&1D ;;A233: >. 3E 1D CALL get_notalphas ;;A235: ... CD AB A2 label_A238 LD A,&03 ;;A238: >. 3E 03 label_A23A CALL label_A251 ;;A23A: .Q. CD 51 A2 label_A23D POP BC ;;A23D: . C1 LD (IY+&49),&00 ;;A23E: .6I. FD 36 49 00 POP HL ;;A242: . E1 XOR A ;;A243: . AF CP B ;;A244: . B8 JP NZ,back_to_cmd_say_rout_1 ;;A245: .w. C2 77 A0 RET ;;A248: . C9 label_A249 LD B,A ;;A249: G 47 label_A24A CALL get_numbers_g_0 ;;A24A: ... CD A7 A2 DJNZ label_A24A ;;A24D: .. 10 FB JR label_A23D ;;A24F: .. 18 EC label_A251 LD B,A ;;A251: G 47 CP &03 ;;A252: .. FE 03 JR NZ,label_A266 ;;A254: . 20 10 LD A,(HL) ;;A256: ~ 7E INC HL ;;A257: # 23 CP &30 ;;A258: .0 FE 30 JR Z,label_A26B ;;A25A: (. 28 0F CALL label_A2A9 ;;A25C: ... CD A9 A2 LD A,&1E ;;A25F: >. 3E 1E CALL get_notalphas ;;A261: ... CD AB A2 JR label_A26B ;;A264: .. 18 05 label_A266 LD A,B ;;A266: x 78 CP &02 ;;A267: .. FE 02 JR NZ,get_numbers_g_0 ;;A269: < 20 3C label_A26B LD A,(HL) ;;A26B: ~ 7E INC HL ;;A26C: # 23 CP &30 ;;A26D: .0 FE 30 JR NZ,label_A27F ;;A26F: . 20 0E LD A,(HL) ;;A271: ~ 7E CP &30 ;;A272: .0 FE 30 JR NZ,label_A278 ;;A274: . 20 02 INC HL ;;A276: # 23 RET ;;A277: . C9 label_A278 LD A,&2B ;;A278: >+ 3E 2B CALL get_notalphas ;;A27A: ... CD AB A2 JR get_numbers_g_0 ;;A27D: .( 18 28 label_A27F PUSH AF ;;A27F: . F5 LD A,B ;;A280: x 78 CP &03 ;;A281: .. FE 03 JR NZ,get_numbers_a ;;A283: . 20 05 LD A,&2B ;;A285: >+ 3E 2B CALL get_notalphas ;;A287: ... CD AB A2 get_numbers_a POP AF ;;A28A: . F1 CP &32 ;;A28B: .2 FE 32 JR C,get_numbers_a_2 ;;A28D: 8. 38 0E SUB &32 ;;A28F: .2 D6 32 ADD &14 ;;A291: .. C6 14 CALL get_notalphas ;;A293: ... CD AB A2 LD A,(HL) ;;A296: ~ 7E CP &30 ;;A297: .0 FE 30 JR NZ,get_numbers_g_0 ;;A299: . 20 0C INC HL ;;A29B: # 23 RET ;;A29C: . C9 get_numbers_a_2 LD A,(HL) ;;A29D: ~ 7E INC HL ;;A29E: # 23 SUB &30 ;;A29F: .0 D6 30 ADD &0A ;;A2A1: .. C6 0A CALL get_notalphas ;;A2A3: ... CD AB A2 RET ;;A2A6: . C9 get_numbers_g_0 LD A,(HL) ;;A2A7: ~ 7E INC HL ;;A2A8: # 23 label_A2A9 SUB &30 ; substract &30 from a ;;A2A9: .0 D6 30 get_notalphas ; not aplhas ; BSP "1" HL=&A360 DE=&3100 A=&01 BC=&0131 PUSH DE ; push de to stack PUSH HL ; push hl to stack ;pointer to phonos-index from notalphas this pointer is correct in data LD HL,&9C87 ; set hl to index-table of notalphas LD E,A ; write A to E -> E=&01 LD D,&00 ; write 0 to D -> D=&00 DE=&0001 ADD HL,DE ; add content from de to hl -> hl &8C88 ; this increment hl to next index LD E,(HL) ; load incrementor to E label_A2B5 ADD HL,DE ; add the incermentor to HL ; hl content now the address of phonos ; for "1" -> &9CBD next_aphone_byte LD A,(HL) ; load aphone-byte to a RES 7,A ; remove bit 7 so it is < &7F CALL trans_to_aphone ; transfer to aphone routine BIT 7,(HL) ; test bit 7 of aphone greater &7F INC HL ; inc hl for next aphone-byte JR Z,next_aphone_byte ; if > &7F get next aphone-byte ;;A2BF: (. 28 F5 POP HL ; get back hl POP DE ; get back de RET ; return to calling routine label_A2C4 PUSH AF ;;A2C4: . F5 PUSH HL ;;A2C5: . E5 PUSH BC ;;A2C6: . C5 PUSH IY ;;A2C7: .. FD E5 LD HL,data_A62E ;;A2C9: !.. 21 2E A6 LD B,(HL) ;;A2CC: F 46 LD (HL),&00 ;;A2CD: 6. 36 00 INC HL ;;A2CF: # 23 CALL label_A316 ;;A2D0: ... CD 16 A3 POP IY ;;A2D3: .. FD E1 POP BC ;;A2D5: . C1 POP HL ;;A2D6: . E1 POP AF ;;A2D7: . F1 RET ;;A2D8: . C9 label_A2D9 LD A,(IY+&01) ;;A2D9: .~. FD 7E 01 AND &C0 ;;A2DC: .. E6 C0 RET Z ;;A2DE: . C8 BIT 6,A ;;A2DF: .w CB 77 LD A,&2D ;;A2E1: >- 3E 2D JR NZ,label_A2E7 ;;A2E3: . 20 02 LD A,&2C ;;A2E5: >, 3E 2C label_A2E7 CALL get_notalphas ;;A2E7: ... CD AB A2 XOR A ;;A2EA: . AF LD (IY+&01),A ;;A2EB: .w. FD 77 01 INC A ;;A2EE: < 3C RET ;;A2EF: . C9 label_A2F0 LD C,A ;;A2F0: O 4F LD A,&01 ;;A2F1: >. 3E 01 CP B ;;A2F3: . B8 JR Z,label_A305 ;;A2F4: (. 28 0F LD A,C ;;A2F6: y 79 label_A2F7 LD C,A ;;A2F7: O 4F LD A,&2F ;;A2F8: >/ 3E 2F CP (HL) ;;A2FA: . BE JR NC,label_A305 ;;A2FB: 0. 30 08 LD A,&39 ;;A2FD: >9 3E 39 CP (HL) ;;A2FF: . BE JR C,label_A305 ;;A300: 8. 38 03 XOR A ;;A302: . AF label_A303 LD A,C ;;A303: y 79 RET ;;A304: . C9 label_A305 XOR A ;;A305: . AF INC A ;;A306: < 3C JR label_A303 ;;A307: .. 18 FA ;---------------------------------------------------------- char_table_a ; check for & % * / | @ ^ + - = > < \ db &26,&25,&2A,&2F,&7C,&40,&5E,&2B db &2D,&3D,&3E,&3C,&5C ;--------------------------------------------------------- label_A316 XOR A ;;A316: . AF CP B ;;A317: . B8 RET Z ;;A318: . C8 SET 7,(HL) ;;A319: .. CB FE PUSH HL ;;A31B: . E5 DEC HL ;;A31C: + 2B LD E,B ;;A31D: X 58 LD D,&00 ;;A31E: .. 16 00 ADD HL,DE ;;A320: . 19 SET 5,(HL) ;;A321: .. CB EE ;this is a pointer in phone ; not alphas to ? LD DE,&9C34 ;;A323: .4. 11 34 9C label_A326 PUSH HL ;;A326: . E5 PUSH BC ;;A327: . C5 label_A328 LD A,(DE) ;;A328: . 1A LD C,A ;;A329: O 4F RES 7,A ;;A32A: .. CB BF XOR (HL) ;;A32C: . AE AND &DF ;;A32D: .. E6 DF JR NZ,label_A33C ;;A32F: . 20 0B BIT 7,C ;;A331: .y CB 79 JR NZ,label_A34F ;;A333: . 20 1A DEC B ;;A335: . 05 JR Z,label_A33C ;;A336: (. 28 04 DEC HL ;;A338: + 2B INC DE ;;A339: . 13 JR label_A328 ;;A33A: .. 18 EC label_A33C EX DE,HL ;;A33C: . EB label_A33D BIT 7,(HL) ;;A33D: .~ CB 7E INC HL ;;A33F: # 23 JR Z,label_A33D ;;A340: (. 28 FB LD C,(HL) ;;A342: N 4E LD B,&00 ;;A343: .. 06 00 ADD HL,BC ;;A345: . 09 LD A,C ;;A346: y 79 OR A ;;A347: . B7 EX DE,HL ;;A348: . EB POP BC ;;A349: . C1 POP HL ;;A34A: . E1 JR NZ,label_A326 ;;A34B: . 20 D9 JR label_A361 ;;A34D: .. 18 12 label_A34F PUSH HL ;;A34F: . E5 PUSH DE ;;A350: . D5 INC DE ;;A351: . 13 INC DE ;;A352: . 13 CALL label_A3D9 ;;A353: ... CD D9 A3 POP DE ;;A356: . D1 POP HL ;;A357: . E1 JR NC,label_A33C ;;A358: 0. 30 E2 SET 7,(HL) ;;A35A: .. CB FE DEC HL ;;A35C: + 2B SET 5,(HL) ;;A35D: .. CB EE POP BC ;;A35F: . C1 POP HL ;;A360: . E1 label_A361 POP HL ;;A361: . E1 LD (IY+&73),&00 ;;A362: .6s. FD 36 73 00 ; get aplhas label_A366 ; alphas PUSH BC ;;A366: . C5 LD B,&00 ;;A367: .. 06 00 LD C,(HL) ;;A369: N 4E RES 7,C ;;A36A: .. CB B9 RES 5,C ;;A36C: .. CB A9 SLA C ;;A36E: .! CB 21 EX DE,HL ;;A370: . EB ; pointer phone 2 but its outsite start &92D2 ; those are the aplhas in single voice LD HL,&9250 ;;A371: !P. 21 50 92 ADD HL,BC ;;A374: . 09 LD C,(HL) ;;A375: N 4E INC HL ;;A376: # 23 LD B,(HL) ;;A377: F 46 DEC HL ;;A378: + 2B ADD HL,BC ;;A379: . 09 EX DE,HL ;;A37A: . EB POP BC ;;A37B: . C1 CALL label_A386 ;;A37C: ... CD 86 A3 RET NC ;;A37F: . D0 DJNZ label_A366 ;;A380: .. 10 E4 CALL label_A502 ;;A382: ... CD 02 A5 RET ;;A385: . C9 label_A386 PUSH HL ;;A386: . E5 PUSH BC ;;A387: . C5 label_A388 LD A,(DE) ;;A388: . 1A LD C,A ;;A389: O 4F XOR (HL) ;;A38A: . AE AND &5F ;;A38B: ._ E6 5F JR NZ,label_A39A ;;A38D: . 20 0B BIT 7,C ;;A38F: .y CB 79 JR NZ,label_A3AC ;;A391: . 20 19 DEC B ;;A393: . 05 JR Z,label_A39A ;;A394: (. 28 04 INC HL ;;A396: # 23 INC DE ;;A397: . 13 JR label_A388 ;;A398: .. 18 EE label_A39A EX DE,HL ;;A39A: . EB label_A39B BIT 7,(HL) ;;A39B: .~ CB 7E INC HL ;;A39D: # 23 JR Z,label_A39B ;;A39E: (. 28 FB LD C,(HL) ;;A3A0: N 4E LD B,&00 ;;A3A1: .. 06 00 ADD HL,BC ;;A3A3: . 09 LD A,C ;;A3A4: y 79 OR A ;;A3A5: . B7 EX DE,HL ;;A3A6: . EB POP BC ;;A3A7: . C1 POP HL ;;A3A8: . E1 JR NZ,label_A386 ;;A3A9: . 20 DB RET ;;A3AB: . C9 label_A3AC POP IX ;;A3AC: .. DD E1 POP IY ;;A3AE: .. FD E1 PUSH IY ;;A3B0: .. FD E5 PUSH IX ;;A3B2: .. DD E5 PUSH BC ;;A3B4: . C5 PUSH DE ;;A3B5: . D5 PUSH HL ;;A3B6: . E5 PUSH IY ;;A3B7: .. FD E5 POP HL ;;A3B9: . E1 INC DE ;;A3BA: . 13 INC DE ;;A3BB: . 13 CALL label_A3D9 ;;A3BC: ... CD D9 A3 POP HL ;;A3BF: . E1 PUSH HL ;;A3C0: . E5 POP IX ;;A3C1: .. DD E1 PUSH IX ;;A3C3: .. DD E5 CALL C,label_A40C ;;A3C5: ... DC 0C A4 CALL C,label_A4C9 ;;A3C8: ... DC C9 A4 JR C,label_A3D2 ;;A3CB: 8. 38 05 POP HL ;;A3CD: . E1 POP DE ;;A3CE: . D1 POP BC ;;A3CF: . C1 JR label_A39A ;;A3D0: .. 18 C8 label_A3D2 POP HL ;;A3D2: . E1 INC HL ;;A3D3: # 23 POP BC ;;A3D4: . C1 POP BC ;;A3D5: . C1 POP DE ;;A3D6: . D1 POP DE ;;A3D7: . D1 RET ;;A3D8: . C9 label_A3D9 LD B,&00 ;;A3D9: .. 06 00 label_A3DB LD A,(DE) ;;A3DB: . 1A RES 7,A ;;A3DC: .. CB BF CP &09 ;;A3DE: .. FE 09 JR Z,label_A3E6 ;;A3E0: (. 28 04 INC B ;;A3E2: . 04 INC DE ;;A3E3: . 13 JR label_A3DB ;;A3E4: .. 18 F5 label_A3E6 PUSH DE ;;A3E6: . D5 XOR A ;;A3E7: . AF CP B ;;A3E8: . B8 JR Z,label_A409 ;;A3E9: (. 28 1E label_A3EB DEC DE ;;A3EB: . 1B LD A,(DE) ;;A3EC: . 1A CP &07 ;;A3ED: .. FE 07 JR NZ,label_A3F8 ;;A3EF: . 20 07 BIT 7,(HL) ;;A3F1: .~ CB 7E JR NZ,label_A407 ;;A3F3: . 20 12 label_A3F5 OR A ;;A3F5: . B7 POP DE ;;A3F6: . D1 RET ;;A3F7: . C9 label_A3F8 BIT 7,(HL) ;;A3F8: .~ CB 7E JR NZ,label_A3F5 ;;A3FA: . 20 F9 DEC HL ;;A3FC: + 2B LD C,(HL) ;;A3FD: N 4E PUSH BC ;;A3FE: . C5 LD B,&FF ;;A3FF: .. 06 FF CALL label_A430 ;;A401: .0. CD 30 A4 POP BC ;;A404: . C1 JR NC,label_A3F5 ;;A405: 0. 30 EE label_A407 DJNZ label_A3EB ;;A407: .. 10 E2 label_A409 SCF ;;A409: 7 37 POP DE ;;A40A: . D1 RET ;;A40B: . C9 label_A40C LD A,(DE) ;;A40C: . 1A BIT 7,A ;;A40D: .. CB 7F JR Z,label_A413 ;;A40F: (. 28 02 SCF ;;A411: 7 37 RET ;;A412: . C9 label_A413 INC DE ;;A413: . 13 LD A,(DE) ;;A414: . 1A RES 7,A ;;A415: .. CB BF CP &08 ;;A417: .. FE 08 JR NZ,label_A421 ;;A419: . 20 06 BIT 5,(HL) ;;A41B: .n CB 6E JR Z,label_A42E ;;A41D: (. 28 0F JR label_A40C ;;A41F: .. 18 EB label_A421 BIT 5,(HL) ;;A421: .n CB 6E JR NZ,label_A42E ;;A423: . 20 09 INC HL ;;A425: # 23 LD C,(HL) ;;A426: N 4E LD B,&00 ;;A427: .. 06 00 CALL label_A430 ;;A429: .0. CD 30 A4 JR C,label_A40C ;;A42C: 8. 38 DE label_A42E OR A ;;A42E: . B7 RET ;;A42F: . C9 label_A430 PUSH AF ;;A430: . F5 DEC A ;;A431: = 3D JR NZ,label_A43C ;;A432: . 20 08 CALL label_A5C7 ;;A434: ... CD C7 A5 JR NC,label_A4B2 ;;A437: 0y 30 79 label_A439 POP AF ;;A439: . F1 SCF ;;A43A: 7 37 RET ;;A43B: . C9 label_A43C DEC A ;;A43C: = 3D JR NZ,label_A446 ;;A43D: . 20 07 CALL label_A5C7 ;;A43F: ... CD C7 A5 JR C,label_A4B2 ;;A442: 8n 38 6E JR label_A439 ;;A444: .. 18 F3 label_A446 DEC A ;;A446: = 3D JR Z,label_A439 ;;A447: (. 28 F0 DEC A ;;A449: = 3D JR NZ,label_A46F ;;A44A: # 20 23 CALL label_A5C7 ;;A44C: ... CD C7 A5 JR NC,label_A4B2 ;;A44F: 0a 30 61 BIT 5,C ;;A451: .i CB 69 JR NZ,label_A439 ;;A453: . 20 E4 BIT 7,C ;;A455: .y CB 79 JR NZ,label_A439 ;;A457: . 20 E0 INC B ;;A459: . 04 JR Z,label_A45F ;;A45A: (. 28 03 INC HL ;;A45C: # 23 JR label_A460 ;;A45D: .. 18 01 label_A45F DEC HL ;;A45F: + 2B label_A460 LD C,(HL) ;;A460: N 4E CALL label_A5C7 ;;A461: ... CD C7 A5 JR C,label_A439 ;;A464: 8. 38 D3 label_A466 DEC B ;;A466: . 05 JR Z,label_A46C ;;A467: (. 28 03 INC HL ;;A469: # 23 JR label_A439 ;;A46A: .. 18 CD label_A46C DEC HL ;;A46C: + 2B JR label_A439 ;;A46D: .. 18 CA label_A46F DEC A ;;A46F: = 3D JR NZ,label_A48E ;;A470: . 20 1C CALL label_A5C7 ;;A472: ... CD C7 A5 JR C,label_A4B2 ;;A475: 8; 38 3B BIT 5,C ;;A477: .i CB 69 JR NZ,label_A439 ;;A479: . 20 BE BIT 7,C ;;A47B: .y CB 79 JR NZ,label_A439 ;;A47D: . 20 BA INC B ;;A47F: . 04 JR Z,label_A485 ;;A480: (. 28 03 INC HL ;;A482: # 23 JR label_A486 ;;A483: .. 18 01 label_A485 DEC HL ;;A485: + 2B label_A486 LD C,(HL) ;;A486: N 4E CALL label_A5C7 ;;A487: ... CD C7 A5 JR NC,label_A439 ;;A48A: 0. 30 AD JR label_A466 ;;A48C: .. 18 D8 label_A48E DEC A ;;A48E: = 3D JR NZ,label_A4B5 ;;A48F: $ 20 24 CALL label_A5C7 ;;A491: ... CD C7 A5 JR NC,label_A4B2 ;;A494: 0. 30 1C BIT 5,C ;;A496: .i CB 69 JR NZ,label_A4B2 ;;A498: . 20 18 BIT 7,C ;;A49A: .y CB 79 JR NZ,label_A4B2 ;;A49C: . 20 14 INC B ;;A49E: . 04 JR Z,label_A4A4 ;;A49F: (. 28 03 INC HL ;;A4A1: # 23 JR label_A4A5 ;;A4A2: .. 18 01 label_A4A4 DEC HL ;;A4A4: + 2B label_A4A5 LD A,C ;;A4A5: y 79 XOR (HL) ;;A4A6: . AE AND &5F ;;A4A7: ._ E6 5F JR Z,label_A439 ;;A4A9: (. 28 8E DEC B ;;A4AB: . 05 JR Z,label_A4B1 ;;A4AC: (. 28 03 INC HL ;;A4AE: # 23 JR label_A4B2 ;;A4AF: .. 18 01 label_A4B1 DEC HL ;;A4B1: + 2B label_A4B2 POP AF ;;A4B2: . F1 OR A ;;A4B3: . B7 RET ;;A4B4: . C9 label_A4B5 POP AF ;;A4B5: . F1 CP &41 ;;A4B6: .A FE 41 JR C,label_A4BE ;;A4B8: 8. 38 04 CP &5B ;;A4BA: .[ FE 5B JR C,label_A4C0 ;;A4BC: 8. 38 02 label_A4BE OR A ;;A4BE: . B7 RET ;;A4BF: . C9 label_A4C0 RES 7,C ;;A4C0: .. CB B9 RES 5,C ;;A4C2: .. CB A9 CP C ;;A4C4: . B9 SCF ;;A4C5: 7 37 RET Z ;;A4C6: . C8 CCF ;;A4C7: ? 3F RET ;;A4C8: . C9 label_A4C9 PUSH AF ;;A4C9: . F5 LD HL,data_A658 ;;A4CA: !X. 21 58 A6 LD C,(HL) ;;A4CD: N 4E INC HL ;;A4CE: # 23 LD B,&00 ;;A4CF: .. 06 00 ADD HL,BC ;;A4D1: . 09 label_A4D2 INC DE ;;A4D2: . 13 LD A,(DE) ;;A4D3: . 1A RES 7,A ;;A4D4: .. CB BF CP &41 ;;A4D6: .A FE 41 JR Z,label_A4F7 ;;A4D8: (. 28 1D CP &42 ;;A4DA: .B FE 42 JR NZ,label_A4E8 ;;A4DC: . 20 0A SET 5,(IX+&00) ;;A4DE: .... DD CB 00 EE SET 7,(IX+&01) ;;A4E2: .... DD CB 01 FE JR label_A4F7 ;;A4E6: .. 18 0F label_A4E8 LD (HL),A ;;A4E8: w 77 INC C ;;A4E9: . 0C INC HL ;;A4EA: # 23 LD A,&3B ;;A4EB: >; 3E 3B CP C ;;A4ED: . B9 JR NZ,label_A4F7 ;;A4EE: . 20 07 PUSH DE ;;A4F0: . D5 CALL label_A502 ;;A4F1: ... CD 02 A5 POP DE ;;A4F4: . D1 LD C,&00 ;;A4F5: .. 0E 00 label_A4F7 LD A,(DE) ;;A4F7: . 1A BIT 7,A ;;A4F8: .. CB 7F JR Z,label_A4D2 ;;A4FA: (. 28 D6 LD A,C ;;A4FC: y 79 LD (data_A658),A ;;A4FD: 2X. 32 58 A6 POP AF ;;A500: . F1 RET ;;A501: . C9 label_A502 LD HL,data_A658 ;;A502: !X. 21 58 A6 LD B,(HL) ;;A505: F 46 INC B ;;A506: . 04 label_A507 DEC B ;;A507: . 05 RET Z ;;A508: . C8 INC HL ;;A509: # 23 LD A,(HL) ;;A50A: ~ 7E PUSH HL ;;A50B: . E5 PUSH BC ;;A50C: . C5 ; check if byte is in table LD HL,comp_table_2 ;;A50D: !.. 21 A2 A5 LD BC,&0009 ;;A510: ... 01 09 00 CPIR ;;A513: .. ED B1 JR NZ,label_A520 ;;A515: . 20 09 PUSH AF ;;A517: . F5 LD A,&01 ;;A518: >. 3E 01 CALL trans_to_aphone ;;A51A: ... CD 98 A5 POP AF ;;A51D: . F1 JR label_A549 ;;A51E: .) 18 29 label_A520 LD HL,comp_table_3 ;;A520: !.. 21 AB A5 LD BC,&0008 ;;A523: ... 01 08 00 CPIR ;;A526: .. ED B1 JR NZ,label_A535 ;;A528: . 20 0B PUSH AF ;;A52A: . F5 LD A,&02 ;;A52B: >. 3E 02 CALL trans_to_aphone ;;A52D: ... CD 98 A5 POP AF ;;A530: . F1 JR label_A56B ;;A531: .8 18 38 label_A533 JR label_A507 ;;A533: .. 18 D2 label_A535 CP &68 ;;A535: .h FE 68 JR NZ,label_A549 ;;A537: . 20 10 LD HL,comp_table_4 ;;A539: !.. 21 B3 A5 LD BC,&0007 ;;A53C: ... 01 07 00 CPIR ;;A53F: .. ED B1 LD A,&1B ;;A541: >. 3E 1B JR Z,label_A591 ;;A543: (L 28 4C LD A,&39 ;;A545: >9 3E 39 JR label_A591 ;;A547: .H 18 48 label_A549 CP &67 ;;A549: .g FE 67 JR NZ,label_A56B ;;A54B: . 20 1E LD HL,comp_table_4 ;;A54D: !.. 21 B3 A5 LD BC,&0006 ;;A550: ... 01 06 00 CPIR ;;A553: .. ED B1 JR NZ,label_A55B ;;A555: . 20 04 LD A,&24 ;;A557: >$ 3E 24 JR label_A591 ;;A559: .6 18 36 label_A55B LD HL,comp_table_5 ;;A55B: !.. 21 C1 A5 LD BC,&0006 ;;A55E: ... 01 06 00 CPIR ;;A561: .. ED B1 LD A,&3D ;;A563: >= 3E 3D JR Z,label_A591 ;;A565: (* 28 2A LD A,&22 ;;A567: >" 3E 22 JR label_A591 ;;A569: .& 18 26 label_A56B CP &6B ;;A56B: .k FE 6B JR NZ,label_A57F ;;A56D: . 20 10 LD HL,comp_table_4 ;;A56F: !.. 21 B3 A5 LD BC,&000B ;;A572: ... 01 0B 00 CPIR ;;A575: .. ED B1 LD A,&2A ;;A577: >* 3E 2A JR Z,label_A591 ;;A579: (. 28 16 LD A,&08 ;;A57B: >. 3E 08 JR label_A591 ;;A57D: .. 18 12 label_A57F CP &6E ;;A57F: .n FE 6E JR NZ,label_A591 ;;A581: . 20 0E LD HL,comp_table_4 ;;A583: !.. 21 B3 A5 LD BC,&000E ;;A586: ... 01 0E 00 CPIR ;;A589: .. ED B1 LD A,&0B ;;A58B: >. 3E 0B JR Z,label_A591 ;;A58D: (. 28 02 LD A,&38 ;;A58F: >8 3E 38 label_A591 CALL trans_to_aphone ;;A591: ... CD 98 A5 POP BC ;;A594: . C1 POP HL ;;A595: . E1 JR label_A533 ;;A596: .. 18 9B trans_to_aphone PUSH HL ;;A598: . E5 PUSH BC ;;A599: . C5 label_A59A CALL cmd_aphone_2 ;;A59A: ... CD 7F 9E JR NC,label_A59A ;;A59D: 0. 30 FB POP BC ;;A59F: . C1 POP HL ;;A5A0: . E1 RET ;;A5A1: . C9 ;--------------------------------------------------------- comp_table_2 ; compare table_2 &09 bytes db &1C,&3F,&15,&21,&24,&3D,&22,&67,&0A comp_table_3 ; compare table_3 &08 bytes db &09,&11,&0D,&2A,&29,&08,&6B,&32 comp_table_4 db &3C,&13,&0C,&14,&07,&2F,&1A,&33 db &34,&0F,&06,&20,&16,&1F comp_table_5 db &&0F,&16,&1F,&1E,&35,&05 ;---------------------------------------------------------- label_A5C7 ; test for AEIOU PUSH AF ;;A5C7: . F5 LD A,C ;;A5C8: y 79 AND &5F ;;A5C9: ._ E6 5F CP &41 ;;A5CB: .A FE 41 JR Z,label_A5E2 ;;A5CD: (. 28 13 CP &45 ;;A5CF: .E FE 45 JR Z,label_A5E2 ;;A5D1: (. 28 0F CP &49 ;;A5D3: .I FE 49 JR Z,label_A5E2 ;;A5D5: (. 28 0B CP &4F ;;A5D7: .O FE 4F JR Z,label_A5E2 ;;A5D9: (. 28 07 CP &55 ;;A5DB: .U FE 55 JR Z,label_A5E2 ;;A5DD: (. 28 03 POP AF ;;A5DF: . F1 SCF ;;A5E0: 7 37 RET ;;A5E1: . C9 label_A5E2 POP AF ;;A5E2: . F1 OR A ;;A5E3: . B7 RET ;;A5E4: . C9 data_A5E5 ; IX TABLE db &00,&00,&00 indtxtact_back db &C3,&0A,&14 ticker_status db &40 ssa_status_word db &00 ssa_status_word_2 db &3F,&00 data_A5EF defs 63,0 ; db &59,&00,&62,&00,&65,&00,&A2,&00 ; db &CF,&00,&E2,&00,&F9,&00,&C3,&01 ; db &D3,&01,&09,&01,&68,&01,&5C,&00 ; db &5F,&00,&21,&01,&29,&01,&2C,&01 ; db &37,&01,&3F,&01,&B5,&01,&9B,&00 ; db &DC,&01,&EE,&01,&68,&00,&6B,&00 ; db &F4,&07,&26,&00,&06,&02,&15,&02 ; db &1F,&02,&29,&02,&63,&02,&A8 data_A62E ; IX &A5E5 + &49 defs 42,0 ;db &02,&B0,&02,&B8,&02,&6C,&02,&BD ;db &02,&DA,&00,&40,&00,&44,&00,&C3 ;db &02,&D3,&02,&D6,&02,&07,&03,&0A ;db &03,&12,&03,&20,&03,&23,&03,&26 ;db &03,&3A,&03,&4C,&03,&73,&03,&78 ;db &03,&7F data_A658 defs 62,0 ; db &00,&8A,&03,&AE,&03,&B1,&03,&BA ; db &03,&DA,&03,&E1,&03,&F1,&03,&F4 ; db &03,&FA,&03,&15,&04,&1E,&04,&26 ; db &04,&2A,&04,&2E,&04,&40,&04,&4B ; db &04,&65,&04,&6A,&04,&8A,&04,&8F ; db &04,&94,&04,&9F,&04,&A4,&04,&B6 ; db &04,&D4,&04,&E1,&04,&ED,&04,&FD ; db &04,&07,&05,&13,&05,&23 data_A696 defs 83,0 ;db &00,&2A,&05,&41,&05,&CB,&05,&D6 ;db &05,&DC,&05,&16,&06,&22,&06,&5B ;db &06,&83,&06,&24,&07,&5C,&07,&67 ;db &07,&74,&07,&7A,&07,&87,&07,&93 ;db &07,&A7,&07,&B5,&07,&C9,&07,&DD ;db &07,&EB,&07,&CD,&03,&1F,&06,&BB ;db &04,&8E,&06,&99,&06,&57,&07,&DB ;db &02,&A6,&06,&BB,&06,&CC,&06,&E1 ;db &06,&EB,&06,&4B,&07,&7D,&05,&AD ;db &05,&68,&03 ;db &00,&00,&00,&00,&00,&00,&00,&00 rsx_workspace ;;A6E9 DW &A6FC DW &9DF7 NOP ;;A6ED: . 00 ;eventblock_spon cmd_spon_evnt_block ;A6EE db &00,&00 cmd_spon_evnt_block1 db &00,&00,&00,&00,&00,&00,&00,&00 db &00,&24 NOLIST ;; ---- USED FIRMWARE LABELS ---- ;; .KL_LOW_PCHL equ #000b .KL_LOW_PCBC equ #000e .TXT_OUTPUT equ #bb5a .KL_LOG_EXT equ #bcd1 .KL_NEW_FAST_TICKER equ #bce0 .KL_DEL_FAST_TICKER equ #bce6 .KL_DISARM_EVENT equ #bd0a .IND_TXT_OUT_ACTION equ #bdd9