Skip to content

Instantly share code, notes, and snippets.

@kadler

kadler/BUILD.txt Secret

Last active November 16, 2022 05:05
Show Gist options
  • Save kadler/80371a3514ed9e15d59e9155ea1bcb5e to your computer and use it in GitHub Desktop.
Save kadler/80371a3514ed9e15d59e9155ea1bcb5e to your computer and use it in GitHub Desktop.
Build instructions for Bad Apple IBM i
# Instructions for building Bad Apple on IBM i from https://gitlab.com/luigi.elettrico/ba_os400
CRTLIB LIB(LUIGIEL1)
CRTSRCPF FILE(LUIGIEL1/QCSRC)
CPYFRMSTMF FROMSTMF('/path/to/ba_os400/ba_display.dspf') TOMBR('/qsys.lib/luigiel1.lib/qcsrc.file/ba_display.mbr') MBROPT(*REPLACE)
# DFRWRT(*NO) is required here, otherwise the frames are buffered and do not get displayed until the display is read from
CRTDSPF FILE(LUIGIEL1/BA_DISPLAY) SRCFILE(LUIGIEL1/QCSRC) DFRWRT(*NO)
# 87 matches the size of a_bD in BA_readdecodeframe
CRTPF FILE(LUIGIEL1/BA_RAWMV) RCDLEN(87) CCSID(65535)
# ba_rawmv is a binary file which contains frames as 87-byte bitmaps (696 bits, enough to store 30x23 1bpp frames)
# it needs to be copied directly in to the file without any character conversion or line mapping
CPYFRMSTMF FROMSTMF('/path/to/ba_os400/ba_rawmv') TOMBR('/qsys.lib/luigiel1.lib/ba_rawmv.file/ba_rawmv.mbr') MBROPT(*REPLACE) CVTDTA(*NONE) ENDLINFMT(*FIXED) TABEXPN(*NO)
# While you can compile directly from an IFS file, you'll get compile errors including the "ba_display" from
# the DSPF when doing so. Copying to a source member negates this problem.
CPYFRMSTMF FROMSTMF('/path/to/ba_os400/ba_os400dm.c') TOMBR('/qsys.lib/luigiel1.lib/qcsrc.file/ba_os400dm.mbr') MBROPT(*REPLACE)
CRTBNDC PGM(LUIGIEL1/BA_OS400DM) SRCFILE(LUIGIEL1/QCSRC)
# Alternatively, with some adjustments, the raw frames can be read from IFS
# You have two options:
# 1) copy/move/link ba_rawmv to a directory named luigiel1
# then run CHDIR to the directory containing the luigiel1 directory prior to running
# 2) Edit ba_os400dm.c and change "luigiel1/ba_rawmv" to the IFS path to ba_rawmv
#
# In either case, you must then build with *IFSIO or *IFS64IO
CRTBNDC PGM(LUIGIEL1/BA_OS400DM) SRCFILE(LUIGIEL1/QCSRC) SYSIFCOPT(*IFS64IO)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment