; ; Morse encoder programme ; ; Externals ; Print EQU #40 GetInput EQU #43 ; ; Internals ; Speed EQU #700 ; #1300 ; ENT LD A,#92 OUT (#8B),A Loop LD DE,Message ScanLine LD A,(DE) OR A JR Z Loop CALL OutMorse CALL PrintDel CALL CharPause LD A,(DE) CP " " INC DE JR NZ ScanLine SL1 LD A,(DE) CP " " JR NZ ScanLine INC DE JR SL1 ; Message DEFM /CQ CQ CQ/ DEFM / IF ANYBODY IS GOING TO ASDA I WILL/ DEFM / COME ALONG TOO/ DEFM / IF I TOLD THEM SHIT WAS GREEN/ DEFM / THEY WOULD BELIEVE ME/ DEFM / WHY DIDNT YOU TELL ME EARLIER/ DEFM / YOU COULD HAVE HAD TEA AT MY HOUSE/ DEFM / GW0OKI/ DEFB #0 OutMorse CP " " JR Z OMsp ; LD HL,Exceptions OMa CP (HL) JR Z OM0 CALL OMSkip BIT 7,(HL) JR Z OMa ; CP "0" RET C CP "9"+1 JR C OM1 CP "A" RET C CP "z"+1 RET NC CP "a" JR NC OM2 CP "Z"+1 RET NC ; A..Z SUB "A" LD HL,TableA ; OM3 LD B,A OR A JR Z OM4 OM3a LD A,(HL) OR A INC HL JR NZ OM3a DJNZ OM3a OM4 LD A,(HL) OR A RET Z CALL Print CALL DumpChar INC HL JR OM4 ; OM1 SUB "0" LD HL,Table0 JR OM3 ; OM2 SUB "a" LD HL,TableA JR OM3 ; OMsp LD A,#D CALL Print CALL WordPause RET ; OM0 INC HL JR OM4 ; OMSkip PUSH AF CALL OMs POP AF RET ; OMs LD A,(HL) OR A INC HL RET Z JR OMs ; PrintDel PUSH AF LD A,"/" CALL Print POP AF RET ; DumpChar CP "." JR Z DoDi CP "_" JR Z DoDah RET ; DoDi CALL SetOn CALL LurkX CALL SetOff CALL LurkX RET ; DoDah CALL SetOn CALL LurkX CALL LurkX CALL LurkX CALL SetOff CALL LurkX RET ; CharPause CALL LurkX CALL LurkX RET ; WordPause CALL CharPause RET ; LurkX PUSH HL LD HL,Speed LXlp PUSH IX POP IX DEC HL BIT 7,H JR Z LXlp POP HL RET ; SetOn PUSH AF LD A,#00 OUT (#8A),A POP AF RET ; SetOff PUSH AF LD A,#FF OUT (#8A),A POP AF RET ; TableA DEFM /._/ ; A DEFB 0 DEFM /_.../ ; B DEFB 0 DEFM /_._./ ; C DEFB 0 DEFM /_../ ; D DEFB 0 DEFM /./ ; E DEFB 0 DEFM /.._./ ; F DEFB 0 DEFM /__./ ; G DEFB 0 DEFM /..../ ; H DEFB 0 DEFM /../ ; I DEFB 0 DEFM /.___/ ; J DEFB 0 DEFM /_._/ ; K DEFB 0 DEFM /._../ ; L DEFB 0 DEFM /_._/ ; M DEFB 0 DEFM /_./ ; N DEFB 0 DEFM /___/ ; O DEFB 0 DEFM /.__./ ; P DEFB 0 DEFM /__._/ ; Q DEFB 0 DEFM /._./ ; R DEFB 0 DEFM /.../ ; S DEFB 0 DEFM /_/ ; T DEFB 0 DEFM /.._/ ; U DEFB 0 DEFM /..._/ ; V DEFB 0 DEFM /.__/ ; W DEFB 0 DEFM /_.._/ ; X DEFB 0 DEFM /_.__/ ; Y DEFB 0 DEFM /__../ ; Z DEFB 0 DEFM /.__/ ; W DEFB 0 DEFM /_.._/ ; X DEFB 0 ; Table0 DEFM /_____/ ; 0 DEFB 0 DEFM /.____/ ; 1 DEFB 0 DEFM /..___/ ; 2 DEFB 0 DEFM /...__/ ; 3 DEFB 0 DEFM /...._/ ; 4 DEFB 0 DEFM /...../ ; 5 DEFB 0 DEFM /_..../ ; 6 DEFB 0 DEFM /__.../ ; 7 DEFB 0 DEFM /___../ ; 8 DEFB 0 DEFM /____./ ; 9 DEFB 0 ; Exceptions DEFB "." DEFM /._._._/ DEFB 0 DEFB "," DEFM /__..__/ DEFB 0 DEFB "?" DEFM /..__../ DEFB 0 DEFB "=" DEFM /_..._/ DEFB 0 DEFB ":" DEFM /___.../ DEFB 0 DEFB ";" DEFM /_._._./ DEFB 0 DEFB "/" DEFM /_.._./ DEFB 0 DEFB "(" DEFM /_.__._/ DEFB 0 DEFB ")" DEFM /_.__._/ DEFB 0 DEFB #80