SHARE
TWEET

ProgramViewer CE

a guest Feb 27th, 2016 75 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "header.asm"
  2.  
  3. start:
  4.     call _ZeroOP1
  5.     call _AnsName
  6.     call _FindSym
  7.     ret c
  8.     ex de, hl
  9.     ld a, (hl)
  10.     cp 8
  11.     ret nc
  12.     ld bc, 0
  13.     ld c, a
  14.     inc hl
  15.     inc hl
  16.     ld de, OP1+1
  17.     ldir
  18.     ld hl, OP1
  19.     ld (hl), ProgObj
  20.     call _ChkFindSym
  21.     ret c
  22.     push de
  23.    
  24.         ld a, lcdBpp8
  25.         ld  (mpLcdCtrl),a
  26.         ld  de,mpLcdPalette
  27.         ld  b,e
  28. _:  ld  a,b
  29.         rrca
  30.         xor a,b
  31.         and a,%11100000
  32.         xor a,b
  33.         ld  (de),a
  34.         inc de
  35.         ld  a,b
  36.         rra
  37.         ld  (de),a
  38.         inc de
  39.         inc b
  40.         jr  nz,-_
  41.         ld hl, vRAM
  42.         ld (hl), 255
  43.         push hl
  44.         pop de
  45.         inc de
  46.         ld bc, 320*9-1
  47.         ldir
  48.         inc hl
  49.         inc de
  50.         ld (hl), 0
  51.         ld bc, 320-1
  52.         ldir
  53.         inc hl
  54.         inc de
  55.         ld (hl), 255
  56.         ld bc, 320*(240-9-1)-1
  57.         ldir
  58.         ld hl, home_text
  59. loop:
  60.         ld a, (hl)
  61.         or a, a
  62.         jp z, stop
  63.         call _PrintChar_ASM
  64.         inc hl
  65.         jr loop
  66. stop:
  67.     pop de
  68.     ld hl, (320*12)+(4*1)
  69.     ld (TextXPos_ASM), hl
  70.     ex de, hl
  71.     inc hl
  72.     inc hl
  73. putline:
  74.     push hl
  75.         call _Get_Tok_Strng
  76.         ld hl, OP3
  77. putcharacter:
  78.         ld a, (hl)
  79.         or a, a
  80.         jp z, stopcharacter
  81.         cp tEnter
  82.         jp z, stopline
  83.         call _PrintChar_ASM
  84.         inc hl
  85.         jr putcharacter
  86. stopcharacter:
  87.     pop hl
  88.     inc hl
  89.     jr putline
  90. stopline:
  91.     ld a, lcdBpp16
  92.     ld  (mpLcdCtrl),a
  93.     ret
  94.    
  95. _PrintChar_ASM:
  96.         push hl
  97. TextXPos_ASM = $+1
  98.             ld  bc, 320+22
  99.             push af
  100.                 push af
  101.                     push bc
  102.                         push af
  103.                             ld  a,(MonoFlag_ASM)
  104.                             or  a,a
  105.                             ld  a,8
  106.                         pop de
  107.                         jr  z,+_
  108.                         or  a,a
  109.                         sbc hl,hl
  110.                         ld  l,d
  111.                         ld  de,(CharSpacing_ASM)
  112.                         add hl,de
  113.                         ld  a,(hl)
  114.                         inc a
  115. _:                      ld  (charwidth),a
  116.                         or  a,a
  117.                         sbc hl,hl
  118.                         ld  l,a
  119.                         neg
  120.                         ld  (CharWidthDelta_ASM),a
  121.                         add hl,bc
  122.                         ld  (TextXPos_ASM),hl
  123. CharWidthDelta_ASM =$+1
  124.                         ld  de,$FFFFFF
  125.                         ld  hl,lcdWidth
  126.                         add hl,de
  127.                         ld  (line_change),hl
  128. TextYPos_ASM = $+1
  129.                         ld  l,0
  130.                         ld  h,160
  131.                         mlt hl
  132.                         add hl,hl
  133.                         ld  de,vRAM
  134.                         add hl,de
  135.                     pop de
  136.                     add hl,de
  137.                 pop af
  138.                 ex  de,hl
  139.                 or  a,a
  140.                 sbc hl,hl
  141.                 ld  l,a
  142.                 add hl,hl
  143.                 add hl,hl
  144.                 add hl,hl
  145.                 ld  bc,(TextData_ASM)
  146.                 add hl,bc
  147.                 ld  b,8
  148. iloop:          push bc
  149.                     ld  c,(hl)
  150. charwidth =$+1
  151.                     ld  b,0
  152.                     ex  de,hl
  153.                     push    de
  154. TextColor_ASM =$+1
  155.                         ld  de,$FF00
  156. cloop:                  ld  a,d
  157.                         rlc c
  158.                         jr  nc,+_
  159.                         ld  a,e
  160. _:                      cp  a,$FF
  161.                         jr  nz,+_
  162.                         ld  a,(hl)
  163. _:                      ld  (hl),a
  164.                         inc hl
  165.                         djnz    cloop
  166. line_change =$+1
  167.                         ld  bc,0
  168.                         add hl,bc
  169.                     pop de
  170.                     ex  de,hl
  171.                     inc hl
  172.                 pop bc
  173.                 djnz    iloop
  174.             pop af
  175.         pop hl
  176.         ret
  177.    
  178. home_text:
  179.     .db "Program Viewer - By Peter \"PT_\" Tillema", 0
  180.    
  181. MonoFlag_ASM:
  182.     .db $FF
  183. CharSpacing_ASM:
  184.     .dl DefaultCharSpacing_ASM
  185. TextData_ASM:
  186.     .dl DefaultTextData_ASM
  187.  
  188. DefaultCharSpacing_ASM:
  189.     ;   0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
  190.     .db 8,8,8,7,7,7,8,8,8,8,8,8,8,1,8,8
  191.     .db 7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8
  192.     .db 2,3,5,7,7,7,7,4,4,4,8,6,3,6,2,7
  193.     .db 7,6,7,7,7,7,7,7,7,7,2,3,5,6,5,6
  194.     .db 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7
  195.     .db 7,7,7,7,8,7,7,7,7,7,7,4,7,4,7,8
  196.     .db 3,7,7,7,7,7,7,7,7,4,7,7,4,7,7,7
  197.     .db 7,7,7,7,6,7,7,7,7,7,7,6,2,6,7,7
  198.     .db 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7
  199.     .db 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7
  200.  
  201. ;-------------------------------------------------------------------------------
  202. DefaultTextData_ASM:
  203. Char000: .db $00,$00,$00,$00,$00,$00,$00,$00    ; .
  204. Char001: .db $7E,$81,$A5,$81,$BD,$BD,$81,$7E    ; .
  205. Char002: .db $7E,$FF,$DB,$FF,$C3,$C3,$FF,$7E    ; .
  206. Char003: .db $6C,$FE,$FE,$FE,$7C,$38,$10,$00    ; .
  207. Char004: .db $10,$38,$7C,$FE,$7C,$38,$10,$00    ; .
  208. Char005: .db $38,$7C,$38,$FE,$FE,$10,$10,$7C    ; .
  209. Char006: .db $00,$18,$3C,$7E,$FF,$7E,$18,$7E    ; .
  210. Char007: .db $00,$00,$18,$3C,$3C,$18,$00,$00    ; .
  211. Char008: .db $FF,$FF,$E7,$C3,$C3,$E7,$FF,$FF    ; .
  212. Char009: .db $00,$3C,$66,$42,$42,$66,$3C,$00    ; .
  213. Char010: .db $FF,$C3,$99,$BD,$BD,$99,$C3,$FF    ; .
  214. Char011: .db $0F,$07,$0F,$7D,$CC,$CC,$CC,$78    ; .
  215. Char012: .db $3C,$66,$66,$66,$3C,$18,$7E,$18    ; .
  216. Char013: .db $3F,$33,$3F,$30,$30,$70,$F0,$E0    ; .
  217. Char014: .db $7F,$63,$7F,$63,$63,$67,$E6,$C0    ; .
  218. Char015: .db $99,$5A,$3C,$E7,$E7,$3C,$5A,$99    ; .
  219. Char016: .db $80,$E0,$F8,$FE,$F8,$E0,$80,$00    ; .
  220. Char017: .db $02,$0E,$3E,$FE,$3E,$0E,$02,$00    ; .
  221. Char018: .db $18,$3C,$7E,$18,$18,$7E,$3C,$18    ; .
  222. Char019: .db $66,$66,$66,$66,$66,$00,$66,$00    ; .
  223. Char020: .db $7F,$DB,$DB,$7B,$1B,$1B,$1B,$00    ; .
  224. Char021: .db $3F,$60,$7C,$66,$66,$3E,$06,$FC    ; .
  225. Char022: .db $00,$00,$00,$00,$7E,$7E,$7E,$00    ; .
  226. Char023: .db $18,$3C,$7E,$18,$7E,$3C,$18,$FF    ; .
  227. Char024: .db $18,$3C,$7E,$18,$18,$18,$18,$00    ; .
  228. Char025: .db $18,$18,$18,$18,$7E,$3C,$18,$00    ; .
  229. Char026: .db $00,$18,$0C,$FE,$0C,$18,$00,$00    ; .
  230. Char027: .db $00,$30,$60,$FE,$60,$30,$00,$00    ; .
  231. Char028: .db $00,$00,$C0,$C0,$C0,$FE,$00,$00    ; .
  232. Char029: .db $00,$24,$66,$FF,$66,$24,$00,$00    ; .
  233. Char030: .db $00,$18,$3C,$7E,$FF,$FF,$00,$00    ; .
  234. Char031: .db $00,$FF,$FF,$7E,$3C,$18,$00,$00    ; .
  235. Char032: .db $00,$00,$00,$00,$00,$00,$00,$00    ;  
  236. Char033: .db $C0,$C0,$C0,$C0,$C0,$00,$C0,$00    ; !
  237. Char034: .db $D8,$D8,$D8,$00,$00,$00,$00,$00    ; "
  238. Char035: .db $6C,$6C,$FE,$6C,$FE,$6C,$6C,$00    ; #
  239. Char036: .db $18,$7E,$C0,$7C,$06,$FC,$18,$00    ; $
  240. Char037: .db $00,$C6,$CC,$18,$30,$66,$C6,$00    ; %
  241. Char038: .db $38,$6C,$38,$76,$DC,$CC,$76,$00    ; &
  242. Char039: .db $30,$30,$60,$00,$00,$00,$00,$00    ; '
  243. Char040: .db $30,$60,$C0,$C0,$C0,$60,$30,$00    ; (
  244. Char041: .db $C0,$60,$30,$30,$30,$60,$C0,$00    ; )
  245. Char042: .db $00,$66,$3C,$FF,$3C,$66,$00,$00    ; *
  246. Char043: .db $00,$30,$30,$FC,$FC,$30,$30,$00    ; +
  247. Char044: .db $00,$00,$00,$00,$00,$60,$60,$C0    ; ,
  248. Char045: .db $00,$00,$00,$FC,$00,$00,$00,$00    ; -
  249. Char046: .db $00,$00,$00,$00,$00,$C0,$C0,$00    ; .
  250. Char047: .db $06,$0C,$18,$30,$60,$C0,$80,$00    ; /
  251. Char048: .db $7C,$CE,$DE,$F6,$E6,$C6,$7C,$00    ; 0
  252. Char049: .db $30,$70,$30,$30,$30,$30,$FC,$00    ; 1
  253. Char050: .db $7C,$C6,$06,$7C,$C0,$C0,$FE,$00    ; 2
  254. Char051: .db $FC,$06,$06,$3C,$06,$06,$FC,$00    ; 3
  255. Char052: .db $0C,$CC,$CC,$CC,$FE,$0C,$0C,$00    ; 4
  256. Char053: .db $FE,$C0,$FC,$06,$06,$C6,$7C,$00    ; 5
  257. Char054: .db $7C,$C0,$C0,$FC,$C6,$C6,$7C,$00    ; 6
  258. Char055: .db $FE,$06,$06,$0C,$18,$30,$30,$00    ; 7
  259. Char056: .db $7C,$C6,$C6,$7C,$C6,$C6,$7C,$00    ; 8
  260. Char057: .db $7C,$C6,$C6,$7E,$06,$06,$7C,$00    ; 9
  261. Char058: .db $00,$C0,$C0,$00,$00,$C0,$C0,$00    ; :
  262. Char059: .db $00,$60,$60,$00,$00,$60,$60,$C0    ; ;
  263. Char060: .db $18,$30,$60,$C0,$60,$30,$18,$00    ; <
  264. Char061: .db $00,$00,$FC,$00,$FC,$00,$00,$00    ; =
  265. Char062: .db $C0,$60,$30,$18,$30,$60,$C0,$00    ; >
  266. Char063: .db $78,$CC,$18,$30,$30,$00,$30,$00    ; ?
  267. Char064: .db $7C,$C6,$DE,$DE,$DE,$C0,$7E,$00    ; @
  268. Char065: .db $38,$6C,$C6,$C6,$FE,$C6,$C6,$00    ; A
  269. Char066: .db $FC,$C6,$C6,$FC,$C6,$C6,$FC,$00    ; B
  270. Char067: .db $7C,$C6,$C0,$C0,$C0,$C6,$7C,$00    ; C
  271. Char068: .db $F8,$CC,$C6,$C6,$C6,$CC,$F8,$00    ; D
  272. Char069: .db $FE,$C0,$C0,$F8,$C0,$C0,$FE,$00    ; E
  273. Char070: .db $FE,$C0,$C0,$F8,$C0,$C0,$C0,$00    ; F
  274. Char071: .db $7C,$C6,$C0,$C0,$CE,$C6,$7C,$00    ; G
  275. Char072: .db $C6,$C6,$C6,$FE,$C6,$C6,$C6,$00    ; H
  276. Char073: .db $7E,$18,$18,$18,$18,$18,$7E,$00    ; I
  277. Char074: .db $06,$06,$06,$06,$06,$C6,$7C,$00    ; J
  278. Char075: .db $C6,$CC,$D8,$F0,$D8,$CC,$C6,$00    ; K
  279. Char076: .db $C0,$C0,$C0,$C0,$C0,$C0,$FE,$00    ; L
  280. Char077: .db $C6,$EE,$FE,$FE,$D6,$C6,$C6,$00    ; M
  281. Char078: .db $C6,$E6,$F6,$DE,$CE,$C6,$C6,$00    ; N
  282. Char079: .db $7C,$C6,$C6,$C6,$C6,$C6,$7C,$00    ; O
  283. Char080: .db $FC,$C6,$C6,$FC,$C0,$C0,$C0,$00    ; P
  284. Char081: .db $7C,$C6,$C6,$C6,$D6,$DE,$7C,$06    ; Q
  285. Char082: .db $FC,$C6,$C6,$FC,$D8,$CC,$C6,$00    ; R
  286. Char083: .db $7C,$C6,$C0,$7C,$06,$C6,$7C,$00    ; S
  287. Char084: .db $FF,$18,$18,$18,$18,$18,$18,$00    ; T
  288. Char085: .db $C6,$C6,$C6,$C6,$C6,$C6,$FE,$00    ; U
  289. Char086: .db $C6,$C6,$C6,$C6,$C6,$7C,$38,$00    ; V
  290. Char087: .db $C6,$C6,$C6,$C6,$D6,$FE,$6C,$00    ; W
  291. Char088: .db $C6,$C6,$6C,$38,$6C,$C6,$C6,$00    ; X
  292. Char089: .db $C6,$C6,$C6,$7C,$18,$30,$E0,$00    ; Y
  293. Char090: .db $FE,$06,$0C,$18,$30,$60,$FE,$00    ; Z
  294. Char091: .db $F0,$C0,$C0,$C0,$C0,$C0,$F0,$00    ; [
  295. Char092: .db $C0,$60,$30,$18,$0C,$06,$02,$00    ; \
  296. Char093: .db $F0,$30,$30,$30,$30,$30,$F0,$00    ; ]
  297. Char094: .db $10,$38,$6C,$C6,$00,$00,$00,$00    ; ^
  298. Char095: .db $00,$00,$00,$00,$00,$00,$00,$FF    ; _
  299. Char096: .db $C0,$C0,$60,$00,$00,$00,$00,$00    ; `
  300. Char097: .db $00,$00,$7C,$06,$7E,$C6,$7E,$00    ; a
  301. Char098: .db $C0,$C0,$C0,$FC,$C6,$C6,$FC,$00    ; b
  302. Char099: .db $00,$00,$7C,$C6,$C0,$C6,$7C,$00    ; c
  303. Char100: .db $06,$06,$06,$7E,$C6,$C6,$7E,$00    ; d
  304. Char101: .db $00,$00,$7C,$C6,$FE,$C0,$7C,$00    ; e
  305. Char102: .db $1C,$36,$30,$78,$30,$30,$78,$00    ; f
  306. Char103: .db $00,$00,$7E,$C6,$C6,$7E,$06,$FC    ; g
  307. Char104: .db $C0,$C0,$FC,$C6,$C6,$C6,$C6,$00    ; h
  308. Char105: .db $60,$00,$E0,$60,$60,$60,$F0,$00    ; i
  309. Char106: .db $06,$00,$06,$06,$06,$06,$C6,$7C    ; j
  310. Char107: .db $C0,$C0,$CC,$D8,$F8,$CC,$C6,$00    ; k
  311. Char108: .db $E0,$60,$60,$60,$60,$60,$F0,$00    ; l
  312. Char109: .db $00,$00,$CC,$FE,$FE,$D6,$D6,$00    ; m
  313. Char110: .db $00,$00,$FC,$C6,$C6,$C6,$C6,$00    ; n
  314. Char111: .db $00,$00,$7C,$C6,$C6,$C6,$7C,$00    ; o
  315. Char112: .db $00,$00,$FC,$C6,$C6,$FC,$C0,$C0    ; p
  316. Char113: .db $00,$00,$7E,$C6,$C6,$7E,$06,$06    ; q
  317. Char114: .db $00,$00,$FC,$C6,$C0,$C0,$C0,$00    ; r
  318. Char115: .db $00,$00,$7E,$C0,$7C,$06,$FC,$00    ; s
  319. Char116: .db $30,$30,$FC,$30,$30,$30,$1C,$00    ; t
  320. Char117: .db $00,$00,$C6,$C6,$C6,$C6,$7E,$00    ; u
  321. Char118: .db $00,$00,$C6,$C6,$C6,$7C,$38,$00    ; v
  322. Char119: .db $00,$00,$C6,$C6,$D6,$FE,$6C,$00    ; w
  323. Char120: .db $00,$00,$C6,$6C,$38,$6C,$C6,$00    ; x
  324. Char121: .db $00,$00,$C6,$C6,$C6,$7E,$06,$FC    ; y
  325. Char122: .db $00,$00,$FE,$0C,$38,$60,$FE,$00    ; z
  326. Char123: .db $1C,$30,$30,$E0,$30,$30,$1C,$00    ; {
  327. Char124: .db $C0,$C0,$C0,$00,$C0,$C0,$C0,$00    ; |
  328. Char125: .db $E0,$30,$30,$1C,$30,$30,$E0,$00    ; }
  329. Char126: .db $76,$DC,$00,$00,$00,$00,$00,$00    ; ~
  330. Char127: .db $00,$10,$38,$6C,$C6,$C6,$FE,$00    ; .
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top