Advertisement
Cremulus

Morse joke

Feb 20th, 2020
1,148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; So, this is what I was doing at Tuesday 05:38:30pm 26/02/1985
  2. ;
  3. ; Note the two errors in the Morse data table. They made it even more amusing...
  4.  
  5. ;
  6. ;            Morse encoder programme
  7. ;
  8.     ;        Externals
  9. ;
  10. Print        EQU #40
  11. GetInput     EQU #43
  12. ;
  13.     ;        Internals
  14. ;
  15. Speed        EQU #700 ;    #1300
  16. ;
  17.              ENT
  18.              LD A,#92
  19.              OUT (#8B),A
  20. Loop         LD DE,Message
  21. ScanLine     LD A,(DE)
  22.              OR A
  23.              JR Z Loop
  24.              CALL OutMorse
  25.              CALL PrintDel
  26.              CALL CharPause
  27.              LD A,(DE)
  28.              CP " "
  29.              INC DE
  30.              JR NZ ScanLine
  31. SL1          LD A,(DE)
  32.              CP " "
  33.              JR NZ ScanLine
  34.              INC DE
  35.              JR SL1
  36. ;
  37. Message      DEFM /CQ CQ CQ/
  38.              DEFM / IF ANYBODY IS GOING TO ASDA I WILL/
  39.              DEFM / COME ALONG TOO/
  40.              DEFM / IF I TOLD THEM SHIT WAS GREEN/
  41.              DEFM / THEY WOULD BELIEVE ME/
  42.              DEFM / WHY DIDNT YOU TELL ME EARLIER/
  43.              DEFM / YOU COULD HAVE HAD TEA AT MY HOUSE/
  44.              DEFM / GW0OKI/
  45.              DEFB #0
  46. OutMorse     CP " "
  47.              JR Z OMsp
  48.              ;
  49.              LD HL,Exceptions
  50. OMa          CP (HL)
  51.              JR Z OM0
  52.              CALL OMSkip
  53.              BIT 7,(HL)
  54.              JR Z OMa
  55. ;
  56.              CP "0"
  57.              RET C
  58.              CP "9"+1
  59.              JR C OM1
  60.              CP "A"
  61.              RET C
  62.              CP "z"+1
  63.              RET NC
  64.              CP "a"
  65.              JR NC OM2
  66.              CP "Z"+1
  67.              RET NC
  68.              ; A..Z
  69.              SUB "A"
  70.              LD HL,TableA
  71.              ;
  72. OM3          LD B,A
  73.              OR A
  74.              JR Z OM4
  75. OM3a         LD A,(HL)
  76.              OR A
  77.              INC HL
  78.              JR NZ OM3a
  79.              DJNZ OM3a
  80. OM4          LD A,(HL)
  81.              OR A
  82.              RET Z
  83.              CALL Print
  84.              CALL DumpChar
  85.              INC HL
  86.              JR OM4
  87. ;
  88. OM1          SUB "0"
  89.              LD HL,Table0
  90.              JR OM3
  91. ;
  92. OM2          SUB "a"
  93.              LD HL,TableA
  94.              JR OM3
  95. ;
  96. OMsp         LD A,#D
  97.              CALL Print
  98.              CALL WordPause
  99.              RET
  100. ;
  101. OM0          INC HL
  102.              JR OM4
  103. ;
  104. OMSkip       PUSH AF
  105.              CALL OMs
  106.              POP AF
  107.              RET
  108. ;
  109. OMs          LD A,(HL)
  110.              OR A
  111.              INC HL
  112.              RET Z
  113.              JR OMs
  114. ;
  115. PrintDel     PUSH AF
  116.              LD A,"/"
  117.              CALL Print
  118.              POP AF
  119.              RET
  120. ;
  121. DumpChar     CP "."
  122.              JR Z DoDi
  123.              CP "_"
  124.              JR Z DoDah
  125.              RET
  126. ;
  127. DoDi         CALL SetOn
  128.              CALL LurkX
  129.              CALL SetOff
  130.              CALL LurkX
  131.              RET
  132. ;
  133. DoDah        CALL SetOn
  134.              CALL LurkX
  135.              CALL LurkX
  136.              CALL LurkX
  137.              CALL SetOff
  138.              CALL LurkX
  139.              RET
  140. ;
  141. CharPause    CALL LurkX
  142.              CALL LurkX
  143.              RET
  144. ;
  145. WordPause    CALL CharPause
  146.              RET
  147. ;
  148. LurkX        PUSH HL
  149.              LD HL,Speed
  150. LXlp         PUSH IX
  151.              POP IX
  152.              DEC HL
  153.              BIT 7,H
  154.              JR Z LXlp
  155.              POP HL
  156.              RET
  157. ;
  158. SetOn        PUSH AF
  159.              LD A,#00
  160.              OUT (#8A),A
  161.              POP AF
  162.              RET
  163. ;
  164. SetOff       PUSH AF
  165.              LD A,#FF
  166.              OUT (#8A),A
  167.              POP AF
  168.              RET
  169. ;
  170. TableA       DEFM /._/      ; A
  171.              DEFB 0
  172.              DEFM /_.../    ; B
  173.              DEFB 0
  174.              DEFM /_._./    ; C
  175.              DEFB 0
  176.              DEFM /_../     ; D
  177.              DEFB 0
  178.              DEFM /./       ; E
  179.              DEFB 0
  180.              DEFM /.._./    ; F
  181.              DEFB 0
  182.              DEFM /__./     ; G
  183.              DEFB 0
  184.              DEFM /..../    ; H
  185.              DEFB 0
  186.              DEFM /../      ; I
  187.              DEFB 0
  188.              DEFM /.___/    ; J
  189.              DEFB 0
  190.              DEFM /_._/     ; K
  191.              DEFB 0
  192.              DEFM /._../    ; L
  193.              DEFB 0
  194.              DEFM /_._/     ; M      ERROR! Should have been /__/
  195.              DEFB 0
  196.              DEFM /_./      ; N
  197.              DEFB 0
  198.              DEFM /___/     ; O
  199.              DEFB 0
  200.              DEFM /.__./    ; P
  201.              DEFB 0
  202.              DEFM /__._/    ; Q
  203.              DEFB 0
  204.              DEFM /._./     ; R
  205.              DEFB 0
  206.              DEFM /.../     ; S
  207.              DEFB 0
  208.              DEFM /_/       ; T
  209.              DEFB 0
  210.              DEFM /.._/     ; U
  211.              DEFB 0
  212.              DEFM /..._/    ; V
  213.              DEFB 0
  214.              DEFM /.__/     ; W
  215.              DEFB 0
  216.              DEFM /_.._/    ; X
  217.              DEFB 0
  218.              DEFM /_.__/    ; Y
  219.              DEFB 0
  220.              DEFM /__../    ; Z
  221.              DEFB 0
  222.              DEFM /.__/     ; W
  223.              DEFB 0
  224.              DEFM /_.._/    ; X
  225.              DEFB 0
  226. ;
  227. Table0       DEFM /_____/  ; 0
  228.              DEFB 0
  229.              DEFM /.____/  ; 1
  230.              DEFB 0
  231.              DEFM /..___/  ; 2
  232.              DEFB 0
  233.              DEFM /...__/  ; 3
  234.              DEFB 0
  235.              DEFM /...._/  ; 4
  236.              DEFB 0
  237.              DEFM /...../  ; 5
  238.              DEFB 0
  239.              DEFM /_..../  ; 6
  240.              DEFB 0
  241.              DEFM /__.../  ; 7
  242.              DEFB 0
  243.              DEFM /___../  ; 8
  244.              DEFB 0
  245.              DEFM /____./  ; 9
  246.              DEFB 0
  247. ;
  248. Exceptions   DEFB "."
  249.              DEFM /._._._/
  250.              DEFB 0
  251.              DEFB ","
  252.              DEFM /__..__/
  253.              DEFB 0
  254.              DEFB "?"
  255.              DEFM /..__../
  256.              DEFB 0
  257.              DEFB "="
  258.              DEFM /_..._/
  259.              DEFB 0
  260.              DEFB ":"
  261.              DEFM /___.../
  262.              DEFB 0
  263.              DEFB ";"
  264.              DEFM /_._._./
  265.              DEFB 0
  266.              DEFB "/"
  267.              DEFM /_.._./
  268.              DEFB 0
  269.              DEFB "("
  270.              DEFM /_.__._/  ; ERROR! Should have been /_.__./
  271.              DEFB 0
  272.              DEFB ")"
  273.              DEFM /_.__._/
  274.              DEFB 0
  275.              DEFB #80
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement